Skip to main content

Data Integration

Connect Your Data

Transform your digital signage from static displays to dynamic, data-driven communication channels. SignageStudio integrates with REST APIs, databases, spreadsheets, and third-party services to display real-time information.

Integration Overview

Data Source Types

┌─────────────────────────────────────────────────────────────────┐
│ DATA INTEGRATION OPTIONS │
│ │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ REST APIs │ │ Databases │ │ Spreadsheets │ │
│ │ │ │ │ │ │ │
│ │ • JSON │ │ • SQL Server │ │ • Google │ │
│ │ • XML │ │ • MySQL │ │ • Excel │ │
│ │ • RSS/Atom │ │ • PostgreSQL │ │ • CSV │ │
│ └───────────────┘ └───────────────┘ └───────────────┘ │
│ │ │ │ │
│ └───────────────────┼───────────────────┘ │
│ ▼ │
│ ┌───────────────────┐ │
│ │ SignageStudio │ │
│ │ Data Engine │ │
│ └─────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────┐ │
│ │ Dynamic Content │ │
│ │ on Your Displays │ │
│ └───────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

Integration Methods

MethodUse CaseComplexity
JSON Data ComponentREST API dataLow
XML Data ComponentXML/RSS feedsLow
Google SheetsSpreadsheet dataLow
Database QueryDirect DB accessMedium
Webhook TriggersPush-based updatesMedium
Custom APIAdvanced automationHigh

REST API Integration

JSON Data Source

Connect to any JSON API endpoint:

┌─────────────────────────────────────────────────────────────────┐
│ JSON DATA SOURCE CONFIGURATION │
│ │
│ URL: [https://api.example.com/data ] │
│ Method: [GET ▼] │
│ │
│ Authentication: │
│ ○ None │
│ ○ API Key │
│ ● Bearer Token: [sk_live_xxxxxxxxxxxx ] │
│ ○ Basic Auth │
│ │
│ Headers: │
│ [Content-Type ] : [application/json ] │
│ [Accept ] : [application/json ] │
│ │
│ Refresh Interval: [60 ▼] seconds │
│ │
│ [Test Connection] [Save] │
│ │
└─────────────────────────────────────────────────────────────────┘

Data Mapping with JSONPath

Map API response fields to display elements:

JSONPath ExpressionDescriptionExample
$.nameRoot level property{"name": "value"}
$.data.titleNested property{"data": {"title": "..."}}
$.items[0]First array item{"items": [...]}
$.items[*].nameAll items' nameArray iteration
$.data[?(@.active)]Filtered itemsConditional

Example: Weather API

// API Response
{
"location": "New York",
"current": {
"temp_f": 72,
"condition": "Sunny",
"humidity": 45
}
}

// Data Mapping
{
"city": "$.location",
"temperature": "$.current.temp_f",
"conditions": "$.current.condition",
"humidity": "$.current.humidity"
}

// Display Template
"Currently {{temperature}}°F and {{conditions}} in {{city}}"
// Output: "Currently 72°F and Sunny in New York"

Example: Sales Dashboard

// API Response
{
"metrics": {
"today_sales": 15420,
"today_orders": 142,
"target": 20000,
"percent_complete": 77.1
}
}

// Display Binding
┌─────────────────────────────┐
│ Today's Sales │
│ ${{metrics.today_sales}}
│ ████████░░░ {{percent}}% │
│ Target: ${{metrics.target}}
└─────────────────────────────┘

XML & RSS Integration

XML Data Source

Connect to XML feeds and services:

<!-- Example XML Response -->
<data>
<product>
<name>Widget Pro</name>
<price>29.99</price>
<stock>150</stock>
</product>
</data>

<!-- XPath Mapping -->
name: /data/product/name
price: /data/product/price
stock: /data/product/stock

RSS Feed Integration

Display content from RSS/Atom feeds:

PropertyConfiguration
Feed URLRSS/Atom endpoint
ItemsNumber to display
FieldsTitle, description, image, date
RefreshUpdate interval

Multi-Feed Aggregation

Combine multiple feeds:

┌─────────────────────────────────────────────────────────────────┐
│ FEED AGGREGATOR │
│ │
│ Feed 1: Company Blog │
│ URL: https://blog.company.com/feed │
│ Priority: High │
│ │
│ Feed 2: Industry News │
│ URL: https://news.industry.com/rss │
│ Priority: Normal │
│ │
│ Feed 3: Local News │
│ URL: https://localnews.com/feed │
│ Priority: Low │
│ │
│ Aggregation: Mix by priority │
│ Max Age: 24 hours │
│ Total Items: 10 │
│ │
└─────────────────────────────────────────────────────────────────┘

Spreadsheet Integration

Google Sheets

Connect to Google Sheets for easy data management:

Setup:

  1. Share sheet with SignageStudio service account
  2. Copy sheet URL
  3. Add Google Sheets component
  4. Select range (e.g., Sheet1!A1:D10)
  5. Configure display

Use Cases:

Use CaseSheet Structure
Price listProduct, Price, Unit
Event scheduleTime, Event, Location
Staff directoryName, Title, Photo URL
KPIsMetric, Value, Target

Example Sheet:

ProductPriceSale Price
Coffee$4.50$3.99
Latte$5.50$4.99
Espresso$3.00$2.49

Excel Files

Upload and display Excel data:

FeatureSupport
File upload.xlsx, .xls
Multiple sheetsSelect by name
Cell rangesA1:Z100 notation
FormulasCalculated values
RefreshRe-upload or API

CSV Import

Import CSV files for data tables:

Name,Department,Extension
John Smith,Sales,1234
Jane Doe,Marketing,1235
Bob Wilson,Support,1236

Database Integration

Direct Database Connection (Server Edition)

Connect directly to enterprise databases:

DatabaseConnection String Example
SQL ServerServer=host;Database=db;User=user;Password=pass;
MySQLServer=host;Database=db;Uid=user;Pwd=pass;
PostgreSQLHost=host;Database=db;Username=user;Password=pass;
OracleData Source=host:1521/sid;User Id=user;Password=pass;

Query Configuration

-- Example: Sales KPIs
SELECT
DATE_FORMAT(sale_date, '%Y-%m-%d') as date,
SUM(amount) as daily_sales,
COUNT(*) as order_count
FROM sales
WHERE sale_date = CURDATE()
GROUP BY date;

Parameterized Queries

Use dynamic parameters:

SELECT * FROM products
WHERE category = @category
AND price < @max_price
ORDER BY popularity DESC
LIMIT 10

Parameters can be:

  • Static values
  • Current date/time
  • Screen properties
  • API-driven values

Real-Time Updates

Push vs. Pull

MethodDescriptionUse Case
Pull (polling)Periodic refreshStandard data
Push (webhook)Server-initiatedTime-sensitive
WebSocketPersistent connectionReal-time streams

Webhook Integration

Receive push notifications:

┌─────────────────────────────────────────────────────────────────┐
│ WEBHOOK ENDPOINT │
│ │
│ Your Webhook URL: │
│ https://api.signage.me/webhook/abc123xyz │
│ │
│ Triggered Events: │
│ ☑ Content update │
│ ☑ Emergency alert │
│ ☑ Price change │
│ ☐ Inventory update │
│ │
│ Authentication: Bearer Token │
│ Secret: [••••••••••••••••] │
│ │
└─────────────────────────────────────────────────────────────────┘

Example: Price Update Webhook

// Incoming webhook payload
POST /webhook/abc123xyz
{
"event": "price_update",
"data": {
"product_id": "SKU123",
"old_price": 9.99,
"new_price": 7.99,
"effective": "immediate"
}
}

// SignageStudio action:
// Update product display immediately

Third-Party Integrations

Pre-Built Connectors

ServiceData Type
Weather.comWeather data
Twitter/XSocial feeds
InstagramPhotos/posts
YouTubeVideos
Google CalendarEvents
Microsoft 365Calendar, Teams
SalesforceCRM data
SlackMessages

POS Integration

Connect to point-of-sale systems:

POS SystemIntegration Method
SquareREST API
ToastREST API
CloverREST API
CustomDatabase/API

Use Cases:

  • Display current wait times
  • Show order status
  • Real-time sales metrics
  • Inventory levels

Room Booking Systems

SystemIntegration
Microsoft 365/ExchangeGraph API
Google WorkspaceCalendar API
RobinREST API
TeemREST API
CustomiCal/ICS

Data Transformation

Formatting Options

TransformExample
Number format1234.56 → $1,234.56
Date format2026-02-01 → Feb 1, 2026
Uppercasehello → HELLO
Round3.14159 → 3.14
TruncateLong text... → Long te...

Conditional Logic

Display different content based on data:

// Conditional formatting
{{#if (gt value 100)}}
<span class="green">{{value}}</span>
{{else}}
<span class="red">{{value}}</span>
{{/if}}

// Conditional display
{{#if inventory}}
In Stock ({{inventory}} available)
{{else}}
Out of Stock
{{/if}}

Data Aggregation

Combine and calculate:

Total: {{sum items.price}}
Average: {{avg items.rating}}
Count: {{count items}}
Max: {{max items.value}}

Security Considerations

Authentication Methods

MethodSecurityUse Case
API KeyMediumPublic APIs
Bearer TokenHighProtected APIs
OAuth 2.0HighUser-authorized
Basic AuthMediumSimple auth
HMAC SignatureHighWebhook verification

Credential Storage

PracticeImplementation
Encrypted storageCredentials encrypted at rest
Environment variablesNot hardcoded
Key rotationRegular credential updates
Least privilegeMinimal required permissions

Data Privacy

ConsiderationRecommendation
PII handlingDon't display on public screens
Data cachingConfigure appropriate TTL
Audit loggingTrack data access
ComplianceGDPR, HIPAA as applicable

Frequently Asked Questions


Next Steps


Data Integration documentation maintained by MediaSignage. For custom integration assistance, contact support@digitalsignage.com