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​

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​


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