Automate with Bupple
Personalised video per lead
From a lead list to an email with a video made for each lead — Clay, HubSpot or HeyReach in, Bupple's Video Editor in the middle, a public link out to your email tool.
Each lead on a list gets a short video that names them and their company. Bupple makes the video, makes a link anyone can open, and hands the link to the tool that writes to the lead.
The recipe, in any tool
Make an automation in Bupple that makes the video. In Automations, describe it once — for each lead, make a 20-second vertical video for the lead, by first name and company, inviting them to a demo, in our brand's look — and open Schedule under the message box: switch on When another tool calls this link, and set a Credit limit high enough for one video. Save and switch it on.
Add two places under Send the result on its page: A public link (so each video gets a link anyone can open), then A webhook — the URL of the step in your tool that will send the email. Copy the webhook's signing secret.
Call the start link once per lead from the tool that holds the list, with the lead's fields as JSON and the lead's id as Idempotency-Key:
{ "first_name": "Dana", "last_name": "Lee", "company": "Acme", "title": "Head of Growth", "email": "dana@acme.com", "lead_id": "rec_8231" }When a video is finished, Bupple calls your webhook with the run's input (the lead you sent) and files[0].public_url (the video's link). Your tool writes the email — or the LinkedIn message — with that link, to input.email.
Price it before a whole list
A video costs more than a note. Start with one lead, read the run's credits_used on its page, then set the automation's Credit limit and send the rest. Over the API, POST /v1/api/jobs without "confirm": true answers the estimate for one video and starts nothing.
In your tools
In the Clay table, add an HTTP API enrichment column: method POST, the start link as the URL, a body of the row's columns (/First Name, /Company, …), and the row's id as the Idempotency-Key header. Run it on the rows you want. To bring the link back into the table, create a Monitor webhook source in the workbook and use its address as the automation's A webhook place; each finished video arrives as a row you can match on input.lead_id. Clay's HTTP API and webhooks need a Clay plan that includes them.
In a HubSpot contact-based workflow, add the Send a webhook action: method POST, the start link as the URL, and Customize request body with the contact's first name, company and email (and the record id). To write the link back to the contact, a second workflow with the When a webhook is received trigger can take the automation's webhook and set a property on the contact it names. Both need a HubSpot Professional or Enterprise plan; see HubSpot's own help for which hub.
HeyReach sends the LinkedIn message; Bupple makes the video. Send each lead to the start link from the tool that holds the list (Clay, a sheet, your CRM). Then, from the automation's A webhook step — through Zapier, n8n or Make — add the lead to your HeyReach campaign with HeyReach's API (AddLeadsToCampaignV2, header X-API-KEY), putting files[0].public_url in a custom user field such as video_link, and use {video_link} in the campaign's message.
Two Zaps. In: the trigger is wherever the lead appears (a new row, a new CRM contact); the action is Webhooks by Zapier › POST to the start link, with the lead's fields as data. Out: a Zap triggered by Webhooks by Zapier › Catch Hook — its address is the automation's A webhook place — then the email action, with the public_url from the catch. Webhooks by Zapier needs a paid Zapier plan.
One workflow can do it all: the lead's trigger → an HTTP Request node that POSTs to the start link → done. A second workflow starting with a Webhook node (its production URL is the automation's A webhook place) → your email node. To wait in the same workflow instead, call POST /v1/api/automations/<id>/runs with a key, then loop a Wait node and an HTTP Request to GET /v1/api/runs/<id> until finished is true.
Scenario one: your lead's trigger → HTTP › Make a request (POST, the start link, body type JSON). Scenario two: Webhooks › Custom webhook (its address is the automation's A webhook place) → your email module with the public_url. To check the signature, switch on Get request headers and compare sha256(...) with your secret.
MailerSend: from the webhook step, call POST https://api.mailersend.com/v1/email with your MailerSend token, the lead's email as to, your template's template_id, and personalization data such as {"first_name": "Dana", "video_link": "https://…"}; the template uses {{video_link}}.
Klaviyo: from the webhook step, create an event for the lead's profile with Klaviyo's Create Event API (for example the metric Video ready, with video_link in its properties), and trigger a flow on that metric that sends the email.
Without an automation
If your tool can wait, it can do it with a key and two calls instead: POST /v1/api/jobs with kind: "video", the brief as request and "confirm": true; then GET /v1/api/jobs/<id> until it is done, GET /v1/api/jobs/<id>/result for the file's asset_id, and make_share_link for a link anyone can open. See Calling the API.
API reference
Every route of the Bupple API — its parameters, its body and its answers — drawn from the same OpenAPI document Zapier, n8n and Make import.
A welcome note for a new lead
A new lead in your CRM or a form starts an automation through its start link; Bupple writes a welcome note in your brand's voice, and your team gets it in Slack or by email.