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
| Method | Use Case | Complexity |
|---|---|---|
| JSON Data Component | REST API data | Low |
| XML Data Component | XML/RSS feeds | Low |
| Google Sheets | Spreadsheet data | Low |
| Database Query | Direct DB access | Medium |
| Webhook Triggers | Push-based updates | Medium |
| Custom API | Advanced automation | High |
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 Expression | Description | Example |
|---|---|---|
$.name | Root level property | {"name": "value"} |
$.data.title | Nested property | {"data": {"title": "..."}} |
$.items[0] | First array item | {"items": [...]} |
$.items[*].name | All items' name | Array iteration |
$.data[?(@.active)] | Filtered items | Conditional |
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:
| Property | Configuration |
|---|---|
| Feed URL | RSS/Atom endpoint |
| Items | Number to display |
| Fields | Title, description, image, date |
| Refresh | Update 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:
- Share sheet with SignageStudio service account
- Copy sheet URL
- Add Google Sheets component
- Select range (e.g.,
Sheet1!A1:D10) - Configure display
Use Cases:
| Use Case | Sheet Structure |
|---|---|
| Price list | Product, Price, Unit |
| Event schedule | Time, Event, Location |
| Staff directory | Name, Title, Photo URL |
| KPIs | Metric, Value, Target |
Example Sheet:
| Product | Price | Sale Price |
|---|---|---|
| Coffee | $4.50 | $3.99 |
| Latte | $5.50 | $4.99 |
| Espresso | $3.00 | $2.49 |
Excel Files
Upload and display Excel data:
| Feature | Support |
|---|---|
| File upload | .xlsx, .xls |
| Multiple sheets | Select by name |
| Cell ranges | A1:Z100 notation |
| Formulas | Calculated values |
| Refresh | Re-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:
| Database | Connection String Example |
|---|---|
| SQL Server | Server=host;Database=db;User=user;Password=pass; |
| MySQL | Server=host;Database=db;Uid=user;Pwd=pass; |
| PostgreSQL | Host=host;Database=db;Username=user;Password=pass; |
| Oracle | Data 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
| Method | Description | Use Case |
|---|---|---|
| Pull (polling) | Periodic refresh | Standard data |
| Push (webhook) | Server-initiated | Time-sensitive |
| WebSocket | Persistent connection | Real-time streams |
Webhook Integration
Receive push notifications:
┌─────────────────────────────────────────────────────────────────┐
│ WEBHOOK ENDPOINT │
│ │
│ Your Webhook URL: │
│ <unique URL shown in SignStudio> │
│ │
│ 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
| Service | Data Type |
|---|---|
| Weather.com | Weather data |
| Twitter/X | Social feeds |
| Photos/posts | |
| YouTube | Videos |
| Google Calendar | Events |
| Microsoft 365 | Calendar, Teams |
| Salesforce | CRM data |
| Slack | Messages |
POS Integration
Connect to point-of-sale systems:
| POS System | Integration Method |
|---|---|
| Square | REST API |
| Toast | REST API |
| Clover | REST API |
| Custom | Database/API |
Use Cases:
- Display current wait times
- Show order status
- Real-time sales metrics
- Inventory levels
Room Booking Systems
| System | Integration |
|---|---|
| Microsoft 365/Exchange | Graph API |
| Google Workspace | Calendar API |
| Robin | REST API |
| Teem | REST API |
| Custom | iCal/ICS |
Data Transformation
Formatting Options
| Transform | Example |
|---|---|
| Number format | 1234.56 → $1,234.56 |
| Date format | 2026-02-01 → Feb 1, 2026 |
| Uppercase | hello → HELLO |
| Round | 3.14159 → 3.14 |
| Truncate | Long 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
| Method | Security | Use Case |
|---|---|---|
| API Key | Medium | Public APIs |
| Bearer Token | High | Protected APIs |
| OAuth 2.0 | High | User-authorized |
| Basic Auth | Medium | Simple auth |
| HMAC Signature | High | Webhook verification |
Credential Storage
| Practice | Implementation |
|---|---|
| Encrypted storage | Credentials encrypted at rest |
| Environment variables | Not hardcoded |
| Key rotation | Regular credential updates |
| Least privilege | Minimal required permissions |
Data Privacy
| Consideration | Recommendation |
|---|---|
| PII handling | Don't display on public screens |
| Data caching | Configure appropriate TTL |
| Audit logging | Track data access |
| Compliance | GDPR, HIPAA as applicable |
Frequently Asked Questions
How do I connect SignageStudio to my company's API?
Use the JSON Data component to connect to any REST API. Enter your API endpoint URL, configure authentication (API key, Bearer token, or OAuth), set the refresh interval, and map the response fields to display elements using JSONPath. Test the connection before saving. The data updates automatically at the configured interval.
Can SignageStudio display real-time data from our database?
Yes, SignageStudio Server edition supports direct database connections to SQL Server, MySQL, PostgreSQL, and Oracle. Configure the connection string, write SQL queries, and bind results to display elements. For cloud edition, expose your data via a REST API. Database queries can be parameterized and scheduled for regular refresh.
How do I update digital signage content automatically from a spreadsheet?
Connect to Google Sheets by sharing your sheet with SignageStudio's service account, then add a Google Sheets component and select your data range. Content updates automatically when you edit the spreadsheet. For Excel files, upload to SignageStudio Resources and reference in your scenes, or expose data via Power Automate/API.
What's the difference between pull and push data integration?
Pull integration (polling) periodically fetches data from your source at configured intervals - simple but has latency. Push integration (webhooks) sends data to SignageStudio immediately when changes occur - real-time but requires server setup. Use pull for standard data updates, push for time-sensitive information like alerts or flash sales.
How do I securely connect to APIs that require authentication?
SignageStudio supports API keys, Bearer tokens, OAuth 2.0, and Basic authentication. Credentials are encrypted at rest and transmitted only over HTTPS. For OAuth, complete the authorization flow once and tokens refresh automatically. Avoid hardcoding credentials - use SignageStudio's credential management. For webhook security, validate incoming requests with HMAC signatures.
Try it on your own screens, free
DigitalSignage.com, which publishes this guide, runs a permanent free plan: the first 3 screens are free forever (no credit card, no ads, no time limit), then from $3 per screen per month with volume pricing via a public calculator. The free SignPlayer runs on Windows, Mac, Android and Android TV, Chrome OS, Raspberry Pi, iPad or any modern web browser. Start free · 2026 pricing
Next Steps
- Components Library - Data display widgets
- Scene Editor - Design data-driven layouts
- API Reference - SignageStudio API
- SDK Documentation - Programmatic access
Data Integration documentation maintained by MediaSignage. For custom integration assistance, contact support@digitalsignage.com