Articles on: Campaigns

Dynamic attachments (per-contact files)

Dynamic attachments (per-contact files)


Purpose


Dynamic attachments let each contact receive a different file on send—SuperSend downloads the file from a URL stored on that contact and attaches it to the message. This is often called custom attachments in the app. Typical uses include recruiting (a specific resume or CV per hiring manager), sales (a tailored proposal or one-pager per account), or any workflow where the file is already chosen per row in your spreadsheet. This article explains how to define an attachment URL field, load URLs (for example via CSV), enable them on an email or LinkedIn message step, and fix common issues such as Google Drive links.


Prerequisites


  • A campaign with contacts (attachment-type custom variables are configured from that campaign’s Contacts area)
  • Files reachable at an http or https URL that returns the raw file (not an HTML viewer or login page)
  • URLs and files within product limits: up to 25 MB per file download, 30 second fetch timeout (see Troubleshooting if sends fail)


How it works (short)


  1. You add a custom variable whose Type is attachment (a URL field on each contact).
  2. Each contact holds the direct download link for their file in that field (CSV import, manual edit, or integration).
  3. On an Email or LinkedIn step, in Custom Attachments, you select which of those variables to attach. At send time, SuperSend downloads the file from the contact’s URL and attaches it. You do not need to paste the URL into the message body; selecting the variable under Custom Attachments is what includes the file.


Static vs dynamic: You can still upload files on the step for the same attachment for every contact; Custom Attachments is only for per-contact URLs.


Steps


1. Add an attachment-type custom variable (campaign Contacts)


Custom attachment variables are managed from the campaign contacts screen (not from team All Contacts global settings alone—the editor for adding custom variables is available there).


  1. Open the campaign.
  2. Click Contacts in the campaign navigation.
  3. Click the gear icon in the toolbar (the side panel title is Global Settings).
  4. Open the Variables tab.
  5. Under Custom Variables, click Add Custom Variable.
  6. Enter a Name (e.g. resume_url). Names are stored normalized (spaces become underscores, lowercased).
  7. Set Type to attachment.
  8. Click Save.


You’ll use the token shown in the UI (e.g. {{resume_url}}) as the identifier for this field. The value stored per contact must be a full URL string starting with http or https.


2. Put the file URL on each contact


  • CSV import: Add a column (for example resume_url). During import, map that column to your custom attachment variable. See Upload Contacts via CSV. In the mapper, custom fields use labels such as Custom Field (Attachment URL) when appropriate.
  • Manual edit: Open the contact, find the custom field, and paste the URL.
  • Integrations: Map an external field that contains the file URL to this custom variable.


Important: The URL must download the file when opened in a browser (or return the file to an HTTP GET). Preview pages, interstitial virus-scan pages, or links that require a logged-in session usually fail.


3. Enable the variable on the sequence step


Works in simple or complex sequences for Email steps, and similarly for LinkedIn message steps that support attachments.


  1. Open the campaign Sequence tab.
  2. Select the Email (or LinkedIn) step.
  3. Scroll to Custom Attachments (helper text: Select variables to attach per-contact files when sending.).
  4. Check the variable(s) to attach (e.g. {{resume_url}}). You can select more than one if you have multiple attachment fields.
  5. Save the campaign / sequence as you normally do.



Shared Drive links usually open a viewer, which will not work. Build a direct download URL:


  1. From a link like https://drive.google.com/file/d/FILE_ID/view?usp=sharing, copy FILE_ID (the segment between /d/ and /view).
  2. Use: https://drive.google.com/uc?export=download&id=FILE_ID
  3. Open that URL in a private/incognito window: the file should download (or prompt to download), not show the Drive UI.
  4. Ensure the file is shared so Anyone with the link can access it if your recipients are not signed in (SuperSend’s servers fetch the URL without the recipient’s cookies).


Filename hints: SuperSend uses response headers and the URL when possible; Drive uc?export=download links sometimes need a correct extension—if the name lacks one, the system may infer an extension from the file’s content type.


5. Test send


Use your usual test email / preview flow for the step. If a test contact’s URL cannot be downloaded, you’ll see an error referencing the variable and URL (same underlying behavior as live sends).


Expected Result


  • Each recipient gets the email (or LinkedIn message, where supported) with their file attached, fetched from their URL.
  • Static uploads on the step still apply to everyone; checked custom attachment variables add per-contact files.
  • In the contact profile, attachment-type fields may show as a View file link for quick verification.


Troubleshooting


  • Issue: No Custom Attachments section on the step.

Fix: Add at least one custom variable with Type attachment in Global SettingsVariables on that campaign’s Contacts page, then save. Refresh the sequence editor if needed.


  • Issue: Attachment missing; send skipped or contact paused.

Fix: If the download fails, SuperSend pauses the contact for one day with a reason about the attachment and sends an in-app notification with the variable name and URL. Fix the URL (direct download, permissions, no auth wall), then resume or clear the pause as you do for other paused contacts. Empty or non-http URLs are skipped for that variable.


  • Issue: “Could not download attachment” / timeout / size errors.

Fix: Confirm the URL returns the file within 25 MB and 30 seconds. Try the URL with curl or a browser. Avoid redirects to HTML error pages.


  • Issue: Wrong filename or extension.

Fix: Prefer URLs whose server sends a useful Content-Disposition filename. For Drive, use the uc?export=download&id= form above.


  • Issue: Works in browser when logged in, fails from SuperSend.

Fix: The fetch runs from SuperSend’s infrastructure with no user session. Use a public direct link (signed S3 URL, public CDN, or Drive “anyone with the link” + direct download URL).




Updated on: 06/04/2026

Was this article helpful?

Share your feedback

Cancel

Thank you!