Embed & share
Two ways to put a packet in front of a carrier: drop a snippet on your own site, or send the public link.
1. Design your packet
Open the Packets page and click + New packet. The Designer is a live preview — everything you change in the right-side drawer updates the form on the left in real time.
Decide:
- Branding — heading font (35-font Google Fonts curated list), background / foreground / contrast colors (with hex inputs you can paste into), light or dark mode.
- Form behavior — default lookup (MC# vs DOT#), 1-column vs 2-column layouts on the carrier-info and dispatch steps.
- Documents — flip on file collection if you want carriers to upload W-9, Proof of Insurance, Operating Authority, References, ACH info, or "Other."
Click Save packet. The URL bar updates so refreshing keeps editing the same packet. The first packet you create is automatically starred as your primary — the one served at /p/<your-slug>.
2. Star a primary packet
Back on the Packets list, click the star icon on the packet you want carriers to see. Exactly one packet is starred at any time — that's the one served at your public link. The first packet you create is starred automatically.
Need to swap which template is live (e.g., switch from your van packet to your reefer packet)? Re-star a different row. The URL you handed out to carriers stays the same — only the form behind it changes.
3. Grab the embed code
Open the Embedded page. The dark code block at the top is your iframe snippet — already pre-filled with your primary packet's URL. Click Copy and paste it into your site:
<iframe src="https://carrierpacket.link/p/Bd2?embed=1"
width="100%" height="900"
style="border:none;border-radius:18px;max-width:780px;"
title="Carrier onboarding"></iframe>
The path /p/<your-slug> always serves your starred packet. So restyling, swapping templates, or rebranding never requires touching the embed code on your site again.
Just want a link to send?
Right below the iframe snippet on the Embedded page is the Direct link — same URL without the iframe wrapper. Email or SMS it to carriers; they click and sign. You'll see the signed packet show up in Carriers within seconds.
https://carrierpacket.link/p/Bd2
height attribute to 1100 px or so. The iframe doesn't auto-resize today; pick a height that fits the tallest step.4. Embedding in popular CMSes
WordPress
- Edit the page or post where you want the form.
- Click the + block button and pick Custom HTML.
- Paste the iframe snippet. Click Preview to confirm it loads.
- Publish.
If your theme strips iframes (some security-hardened themes do), install the free WPCode plugin and use a "Snippet" with location set to "shortcode" — then drop the shortcode into your page.
Squarespace
- Edit the section where the form should appear.
- Click the + insert point and choose the Code block.
- Paste the iframe snippet. Make sure "Display Source" is OFF.
- Click Save.
Note: code blocks require the Business plan or higher. On Personal plans, send carriers the public link instead.
Wix
- From the editor, click + Add Elements → Embed Code → Embed HTML.
- Paste the iframe snippet into the Custom Code box and click Update.
- Resize the embed area on the page to match the iframe height (Wix doesn't auto-fit).
Bare HTML / static sites
Just paste the snippet into your HTML wherever you want the form. No additional setup needed.
<!doctype html>
<html>
<head>
<title>Become a carrier for ACME Logistics</title>
</head>
<body style="background:#f7fafc; padding:40px;">
<h1 style="text-align:center;">Carrier signup</h1>
<iframe src="https://carrierpacket.link/p/Bd2?embed=1"
width="100%" height="900"
style="border:none;border-radius:18px;max-width:780px;display:block;margin:0 auto;"
title="Carrier onboarding"></iframe>
</body>
</html>
5. Customizing the embedded form
Most customization happens in the Designer (colors, fonts, layout, document requirements). A few things you can also tweak via URL parameters:
| Parameter | What it does |
|---|---|
?embed=1 | Embed mode — hides the top header bar and tightens spacing for an iframe context. Adds the frame-ancestors CSP header that allows the iframe to render in your domain. |
?agent=<email> | Legacy attribution tag. Still recorded on the submission, but for ongoing per-rep work prefer the Links system — it gives each rep their own short URL plus their own notification routing. |
Per-agent links (the modern way)
Instead of crafting a custom ?agent=… URL for each rep, create one link per rep on the Links page. Each gets a 2–3-char share URL like https://carrierpacket.link/a/x9 with its own notification destination. When a carrier signs through it, that rep gets pinged on top of the broker-wide recipients.
6. The verification email caveat
When a carrier finishes the form, they see a "Check your email" screen. Clicking the link in the email opens a new top-level browser tab on their machine — not inside your iframe.
This is intentional. Email-link verification is tamper-resistant precisely because it leaves the page. The iframe stays on the "check your email" card; the verification completes off-site. From your dashboard's perspective the carrier flips from Pending verify to Verified automatically.
carrier.signed and carrier.verified webhook events. Your server gets pinged the moment each happens.7. A note on security headers
The carrier-facing page sets Content-Security-Policy: frame-ancestors https: http:; when loaded with ?embed=1, so it's embeddable from any origin. We deliberately don't send X-Frame-Options on the embed view — older browsers honor XFO over CSP and would block the iframe.
If your CMS strips iframes by default (some hosted plans do), you'll need to enable HTML embeds — see the WordPress / Squarespace sections above.
8. Mobile
The form is fully responsive — carousel steps, file upload cards, and the agreement window all adapt to phone-width screens. The default 900 px iframe height creates a slim scroll area on phones; use height: 100vh if you want the form to fill the screen on mobile-first sites:
<iframe src="https://carrierpacket.link/p/Bd2?embed=1"
width="100%" style="border:none; height:100vh;"
title="Carrier onboarding"></iframe>
9. Troubleshooting
| Symptom | Most likely cause |
|---|---|
| iframe shows "refused to display" / X-Frame-Options error | You forgot the ?embed=1 on the URL. Without it we don't send the permissive CSP, and your hosting may inject XFO. Always include ?embed=1 for iframe use. |
| Form fits on desktop but cuts off on mobile | Hard-coded height=. Use height: 100vh or a higher fixed value on mobile-first sites. |
| Carrier completed the form but I don't see them in Carriers | The packet's status is set to Draft, not Active. Check your packet's status on the Packets page. |
| Carriers complain "I never got the verification email" | Junk folder is the usual culprit. The from-address is on a different domain than the form they just used — some inbox providers flag that. Tell them to check Spam and add us to safe senders. |
| I want to change the form but the changes aren't showing up on my site | Your CMS or browser may be caching the iframe. Hit save in the Designer, then hard-refresh (Ctrl+Shift+R) on the embed page. The iframe content itself is never CDN-cached. |
Next
Once you have signups landing, decide what you want to happen with them:
- Get notified — Embedded → Notifications. Toggle email-me, SMS-me, or add up to 3 teammates per channel.
- Per-rep notifications — Links. Make a per-agent share URL with its own notify destination.
- Push to your server — Webhooks. Sub-second event delivery with HMAC signatures.
- Pull on demand — REST API. Bearer-token, paginated, includes
days_until_expiryfor renewal tracking.