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: │
│ 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
| 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
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