SEO and Server-Side Rendering
Introduction
Tickaroo Live Blog embeds are JavaScript-based, which makes integration quick and convenient.
However, pure client-side rendering has two main implications:
- Search engines: Most search engines cannot index JavaScript-injected content.
- Google is the exception: it can index the first page of a liveblog and pick up schema.org data injected by our embed.
- User experience: Users must wait for the embed script to load and fetch data before they see any content.
To balance fast integration and SEO/UX optimization, Tickaroo offers two levels of integration:
- Default SEO behavior (built-in, no extra work required)
- Advanced server-side rendering (optional, for better SEO and performance)
Default SEO Behavior
Tickaroo’s EmbedJS provides excellent SEO support out of the box with zero configuration required:
- Automatic Schema.org Integration: Structured data (LiveBlogPosting) is automatically injected into your page. Injection is controlled by the
injectSchemaOrgparameter. - Google Search Compatibility: Google can read and index the first page of your liveblog content
- Mobile Optimized: Full responsive design works across all devices
Schema.org Injection Options
injectSchemaOrg: "auto" | "always" | "off"
- “auto” (default): Injects schema.org data only if no
LiveBlogPostingobject exists on the page. - “always”: Always inject schema.org, even if another
LiveBlogPostingexists. - “off”: Do not inject schema.org data.
Advanced Integration (Server-Side Fetch)
For maximum search engine visibility and improved user experience, you can fetch liveblog data on your server and inject it into your HTML before sending the page to users.
You can combine any of these techniques independently:
- Insert liveblog HTML on your server side.
- Insert structured schema.org data on your server side.
- Insert our stylesheet directly into your HTML.
Example Page Structure
<!DOCTYPE html>
<html>
<head>
<title>My SEO Liveblog</title>
<!-- Tickaroo Embed Script -->
<script async src="https://cdn.tickaroo.com/webng/embedjs/tik4.js"></script>
<!-- Tickaroo Stylesheet -->
<link rel="stylesheet" href="https://cdn.tickaroo.com/webng/embedjs/tik4.css">
<!-- Prefetched Schema.org data -->
<script type="application/ld+json">
// [Insert schema.org JSON fetched from Tickaroo Prefetch API (see below)]
</script>
</head>
<body>
<!-- Prefetched HTML -->
<!-- [Insert liveblog HTML fetched from Tickaroo API here] -->
</body>
</html>
Available Prefetch APIs
1. Fetch HTML Only
GET https://cdn.tickaroo.com/api/embed/v4/prefetch/liveblog.html
Query Parameters:
client_id(String, required) – Your Client ID. See Authentication section below for where to find it.liveblogId(String, required) – The Liveblog ID.- Any other Liveblog Tag Parameters.
Example Request:
GET https://www.tickaroo.com/api/embed/v4/prefetch/liveblog.html?client_id=YOUR_CLIENT_ID&liveblogId=YOUR_LIVEBLOG_ID
Response:
Content-Type: text/html; charset=utf-8
<tickaroo-liveblog liveblogId="..." clientId="..." ...>
<div> ... </div>
</tickaroo-liveblog>
2. Fetch HTML + Schema.org Data
GET https://www.tickaroo.com/api/embed/v4/prefetch/liveblog.json
Query Parameters:
client_id(String, required) – Your Client ID. See Authentication section below for where to find it.liveblogId(String, required) – The Liveblog ID.canonicalUrl(String, optional) – Canonical URL to use in structured data.- Any other Liveblog Tag Parameters.
Example Request:
GET https://www.tickaroo.com/api/embed/v4/prefetch/liveblog.json?client_id=YOUR_CLIENT_ID&liveblogId=YOUR_LIVEBLOG_ID
Response:
Content-Type: application/json; charset=utf-8
{
"html": "<tickaroo-liveblog ...>...</tickaroo-liveblog>",
"schema": {
"@context": "https://schema.org",
"@type": "LiveBlogPosting",
"...": "..."
}
}
Authentication
client_id query parameter. Use the client_id provided in your Tickaroo backend.
Finding Your Client ID
The client_id is required for all API requests. You can find it in two locations:
- Global Settings:
- Navigate to Settings → Integration in your Tickaroo backend
- Your Client ID is displayed in the Integration settings
- Liveblog Editor:
- Open the specific liveblog in your Tickaroo backend
- Go to the “Liveblog Integration” tab and click “Generate Widget Code”
- The Client ID is shown in the generated widget code
Best Practices
- Use default behavior if:
- Google indexing and schema.org injection are enough for your SEO needs.
- You want the fastest integration with no extra setup.
- Use server-side fetch if:
- You want broader SEO coverage (non-Google search engines).
- You want to improve page load time for end users.
- You need full control over schema.org integration.