ProductsServicesDocsPricingAboutContact Log in Sign up

CRM Integrations

ImpossibleFX renders personalized videos on demand. CRM platforms like Salesforce, HubSpot, and Marketo can trigger these videos by inserting contact data into a URL — no plugins or API code required.

This page covers the general workflow and shows how to set it up in each platform.


How it works

Most email clients do not support inline video playback. The standard pattern is:

  1. Build a landing page that embeds the ImpossibleFX player and reads personalization values from URL parameters.
  2. Create a CRM email template with a clickable thumbnail image that links to the landing page. Use the CRM’s merge fields to inject contact data into the URL.
  3. When the recipient clicks, they land on a page that renders their personalized video in real time.

The landing page URL follows this pattern:

https://yoursite.com/video/welcome?name=FIRST_NAME&company=COMPANY_NAME

Your CRM replaces FIRST_NAME and COMPANY_NAME with real contact data at send time. The landing page reads those parameters and passes them to the ImpossibleFX player.

Landing page

The landing page is a simple HTML page that you host. It reads URL parameters and passes them to the ImpossibleFX player. Here is a minimal example:

<!DOCTYPE html>
<html>
<head>
  <title>Your Personalized Video</title>
  <link rel="stylesheet" href="https://cdn.impossible.io/support/fxplayer.css" />
  <script src="https://cdn.impossible.io/fxplayer/v3/fxplayer.js"></script>
</head>
<body>
  <div id="player" style="max-width: 720px; aspect-ratio: 16/9;"></div>

  <script>
    const params = new URLSearchParams(window.location.search);

    const player = new fxplayer.FXPlayer('player', {
      controls: true,
      impossible: {
        projectId: 'YOUR-PROJECT-ID',
        movie: 'welcome-video',
        params: {
          name: params.get('name') || 'there',
          company: params.get('company') || '',
        },
      },
    });
    player.play();
  </script>
</body>
</html>

The URLSearchParams API reads values from the query string. The fallback values ('there' and '') handle cases where a contact field is empty.

Email thumbnail

ImpossibleFX can render a single frame from your video as a JPEG or PNG — with the same personalization as the video itself. Instead of using a generic screenshot, use the direct URL with a .jpg extension to generate a personalized still frame for each recipient:

<a href="https://yoursite.com/video/welcome?name=MERGE_FIELD&company=MERGE_FIELD">
  <img
    src="https://render.impossible.io/v1/render/YOUR-PROJECT-ID/welcome-video.jpg?name=MERGE_FIELD&company=MERGE_FIELD&frame=30"
    alt="Watch your personalized video"
    width="600"
    style="display: block; border-radius: 8px;"
  />
</a>

The frame=30 parameter selects which frame to use as the thumbnail (frame 30 in this example). Add a q parameter (10–99) to control JPEG quality. Replace the MERGE_FIELD placeholders with your CRM’s merge field syntax (shown in each section below).

Because the thumbnail is rendered with the same contact data as the video, each recipient sees a personalized preview image — for example, their name or company logo already visible in the still frame. This significantly increases click-through rates compared to a generic image.

* Tip

Design your video template so that an early frame (around 1–2 seconds in) works well as a still image. That frame will be the personalized thumbnail every recipient sees in their inbox.

Direct video URL

If your landing page only needs to show the video without additional content, you can link directly to the rendered MP4 instead:

https://render.impossible.io/v1/render/YOUR-PROJECT-ID/welcome-video.mp4?name=MERGE_FIELD&company=MERGE_FIELD

The browser will play the video natively. This is simpler but gives you no control over the page layout, branding, or calls to action.


Salesforce

Salesforce Lightning email templates use triple-brace merge fields: {{{Recipient.FirstName}}}.

In your Salesforce Lightning email template, create a linked thumbnail that passes contact data to your landing page:

<a href="https://yoursite.com/video/welcome?name={{{Recipient.FirstName}}}&company={{{Recipient.Company}}}">
  <img
    src="https://render.impossible.io/v1/render/YOUR-PROJECT-ID/welcome-video.jpg?name={{{Recipient.FirstName}}}&company={{{Recipient.Company}}}&frame=30"
    alt="Watch your personalized video"
    width="600"
    style="display: block; border-radius: 8px;"
  />
</a>

Direct video URL

To link directly to the rendered video without a landing page:

https://render.impossible.io/v1/render/YOUR-PROJECT-ID/welcome-video.mp4?name={{{Recipient.FirstName}}}&company={{{Recipient.Company}}}
i Note

Classic email templates use a different syntax: {!Contact.FirstName}. Marketing Cloud and Account Engagement (Pardot) have their own merge field formats — check your edition’s documentation.

Salesforce resources


HubSpot

HubSpot uses double-brace personalization tokens with spaces: {{ contact.firstname }}.

In the HubSpot email editor, switch to the HTML source of your email module and add:

<a href="https://yoursite.com/video/welcome?name={{ contact.firstname }}&company={{ contact.company }}">
  <img
    src="https://render.impossible.io/v1/render/YOUR-PROJECT-ID/welcome-video.jpg?name={{ contact.firstname }}&company={{ contact.company }}&frame=30"
    alt="Watch your personalized video"
    width="600"
    style="display: block; border-radius: 8px;"
  />
</a>

Direct video URL

https://render.impossible.io/v1/render/YOUR-PROJECT-ID/welcome-video.mp4?name={{ contact.firstname }}&company={{ contact.company }}
* Tip

HubSpot lets you set default values for personalization tokens. Set a fallback like {{ contact.firstname | "there" }} so contacts with missing first names still get a working URL.

HubSpot resources


Marketo

Marketo (Adobe Marketo Engage) uses double-brace tokens: {{lead.First Name}}.

In the Marketo email editor, edit the HTML source and add:

<a href="https://yoursite.com/video/welcome?name={{lead.First Name}}&company={{lead.Company Name}}">
  <img
    src="https://render.impossible.io/v1/render/YOUR-PROJECT-ID/welcome-video.jpg?name={{lead.First Name}}&company={{lead.Company Name}}&frame=30"
    alt="Watch your personalized video"
    width="600"
    style="display: block; border-radius: 8px;"
  />
</a>

Direct video URL

https://render.impossible.io/v1/render/YOUR-PROJECT-ID/welcome-video.mp4?name={{lead.First Name}}&company={{lead.Company Name}}
i Note

Marketo token names match the field’s display name and are case-sensitive. If your fields are named differently, check the field names in Admin > Field Management.

Marketo resources


Tips

Test with real data. Before launching a campaign, send a test email to yourself and verify the landing page URL resolves correctly with your contact data filled in.

URL-encode special characters. If contact fields might contain characters like &, =, or spaces, URL-encode the merge field values. Most CRM platforms handle this automatically for links, but verify with a test send.

Pick a good thumbnail frame. The .jpg thumbnail is rendered from an actual frame of your personalized video. Choose a frame number where the personalization is clearly visible — for example, a frame that shows the recipient’s name or company logo on screen.

Track clicks. All three CRMs track link clicks in emails by default. You can see which contacts engaged with your personalized video directly in your CRM reporting.