> For the complete documentation index, see [llms.txt](https://help.blings.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.blings.io/role-guides/developer/getting-started/how-to-connect-my-data-to-the-sdk/crm-data-integration.md).

# CRM data integration

CRM integration lets a campaign tool pass viewer-specific data into a Blings MP5 experience using the same personalization fields already used in email, SMS, push, and landing-page workflows.

{% embed url="<https://assets.blings.io/helpcenter/Implementing%20Blings%20with%20Your%20CRM.mp4>" %}

## Start in Platform Integration

Before editing a CRM template, open the project in Platform Integration and collect the generated instructions:

{% content-ref url="/pages/x3JPpFV8w1i0Dwwm10bj" %}
[Integration](/apps/blings-platform/integration.md)
{% endcontent-ref %}

Use Integration to:

1. Confirm the Dynamic Data field names.
2. Save the Landing Page settings and selected lineup.
3. Copy the generated **CRM Integration** URL.
4. Copy the **Dynamic Thumbnail** URL if the email or message includes a personalized thumbnail.
5. Run an end-to-end CRM test after replacing sample values with the CRM's merge-tag syntax.

Use Simulation separately to preview representative viewer profiles before the campaign send.

{% content-ref url="/pages/VkH17x1J2SH1VmvzEgwU" %}
[Simulation](/apps/blings-platform/simulation.md)
{% endcontent-ref %}

## Video Context

| Field                | Details                                                                                                                                                              |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Summary              | Explains how CRM data can be passed into Blings through URL parameters, merge tags, or a personalized landing page so each viewer sees a data-driven MP5 experience. |
| Target audience      | CRM administrators, marketing operations, lifecycle teams, solution architects, and developers planning a Blings launch through email, SMS, or a CRM landing page.   |
| Approximate duration | 4:55                                                                                                                                                                 |
| Watch this when...   | You are deciding how to connect CRM fields to a Blings video, preparing an ESP campaign, or aligning technical and campaign teams on the integration approach.       |

## CRM Integration Patterns

{% tabs %}
{% tab title="CRM tokens in URL parameters" %}
Most CRM and ESP tools support merge tags in links. Copy the generated CRM URL from Platform, then replace the sample values with the CRM tokens for the same fields.

Example:

```url
https://mycompany.mp5.live/onboarding?first_name={{ contact.firstname }}&plan={{ contact.plan }}
```

When the recipient clicks the link, the CRM resolves the merge tags and the MP5 receives the values as URL parameters.

Use this pattern when:

* The campaign is sent by email, SMS, push, or another CRM-owned channel.
* The required fields are short enough to pass in a URL.
* The data is acceptable to include in a link after applying your privacy and security rules.
* You need the fastest path from Platform instructions to a live CRM campaign.

<figure><img src="/files/7vQoZikbjTsGzjeD8hn4" alt="CRM URL parameters mapped into a Blings personalized video link"><figcaption></figcaption></figure>

{% content-ref url="/pages/Ja1tZVlvNPdRSPh0FC06" %}
[URL Parameters as Compact Token-Based Approach](/role-guides/developer/getting-started/how-to-connect-my-data-to-the-sdk/crm-data-integration/url-parameters-as-compact-token-based-approach.md)
{% endcontent-ref %}
{% endtab %}

{% tab title="CRM-hosted landing page" %}
Use a CRM-hosted landing page when the CRM or ESP should own the page URL, consent experience, template, analytics wrapper, or data injection.

The CRM page renders its own merge tags, creates a data object, and initializes the Blings player.

```html
<script>
  const data = {
    first_name: "{{ contact.firstname }}",
    plan: "{{ contact.plan }}"
  };

  BlingsPlayer.create({
    project: { id: "project-id-from-platform" },
    settings: {
      container: document.getElementById("blings-video-container")
    },
    data
  });
</script>
```

Use this pattern when:

* The CRM should host the page, such as Salesforce Marketing Cloud CloudPages or Marketo landing pages.
* The data should not appear in the URL.
* The page needs CRM-specific tracking, consent controls, or page personalization before the player loads.
* The campaign team wants a branded page around the MP5 experience.

<figure><img src="/files/DHPtoO5XCgT68jPIHjGf" alt="CRM landing page passing personalized data into the Blings player"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Dynamic thumbnail" %}
Dynamic thumbnails personalize the image or GIF shown inside the CRM message before the viewer clicks the MP5 link.

Use the Dynamic Thumbnail output from Platform after the main video URL and parameter names are stable. The thumbnail URL and click-through URL should use compatible field values so the preview and the MP5 match the same viewer data.

Use this pattern when:

* The campaign is email or messaging-led.
* A personalized image or GIF can improve click-through.
* The CRM template supports image URLs generated from merge tags.
* The thumbnail data can be tested with the same representative profiles used in Simulation.

{% content-ref url="/pages/loJIHwXPyPoCln6Pnd6E" %}
[Embedding GIF with Blings Dynamic Thumbnail](/role-guides/developer/getting-started/how-to-connect-my-data-to-the-sdk/crm-data-integration/embedding-gif-with-blings-dynamic-thumbnail.md)
{% endcontent-ref %}
{% endtab %}
{% endtabs %}

## Common CRM Merge-Tag Syntax

CRM syntax changes by platform. Keep the parameter name from Blings and use the CRM's syntax for the value.

| Platform                   | Example value syntax                                                                     |
| -------------------------- | ---------------------------------------------------------------------------------------- |
| HubSpot                    | `{{ contact.firstname \| default("there") }}`                                            |
| Salesforce Marketing Cloud | `%%FirstName%%`                                                                          |
| Marketo                    | `{{lead.First Name:default=there}}`                                                      |
| Klaviyo                    | `{{ first_name\|default:"there" }}`                                                      |
| Braze                      | `{{${first_name} \| default:'there'}}`                                                   |
| Iterable                   | `{{firstName}}`                                                                          |
| Mailchimp                  | `*\|FNAME\|*`                                                                            |
| Generic CRM                | Use the tool's merge tag for the mapped contact, account, event, or custom object field. |

## QA Checklist

1. Simulate the profile in Platform using values that match the CRM test contact.
2. Send a real test message from the CRM, not only a template preview.
3. Open the generated link and confirm the CRM resolved all merge tags.
4. Confirm the MP5 shows the expected text, media, routing, links, and interactive actions.
5. If using a Dynamic Thumbnail, confirm the thumbnail and MP5 use the same viewer values.
6. Check default values for contacts with missing fields.
7. Check URL encoding for spaces, special characters, non-English text, and long values.

Need help configuring your CRM integration? [Contact us](mailto:support@blings.io).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.blings.io/role-guides/developer/getting-started/how-to-connect-my-data-to-the-sdk/crm-data-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
