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

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​


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​


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