New to Formable? Complete the Embedded signing walkthrough first, then use this page as a translation layer from Dropbox Sign terms and calls.
What you’re moving
In Dropbox Sign you typically:- Create an embedded signature request (
create_embeddedorcreate_embedded_with_template) - Fetch a per-signer
sign_urlwith eachsignature_id - Open it with
hellosign-embedded - React to callbacks such as
signature_request_all_signed, then download files
- Upload and prepare a template (once, then reuse)
- Create an embedded signature request from that
templateIdwith asignersarray (each signer hasemail,name, androle) - Mint a
signingUrlfrom each signer’srecipientSignatureIdand load it in a plain iframe - Handle
document_completed(webhook or poll), then download the signed PDF
Recommended order of work
1
Get a Formable API key
Create an organization and key in Settings. See Authentication.
2
Migrate templates
Recreate documents and fields in Formable. If you use embedded templates today, follow Embedded templates migration.
3
Swap create + signing URL calls
Replace
create_embedded* and /embedded/sign_url/{signature_id} with POST /v1/signature-requests/embedded and POST /v1/recipient-signatures/{id}/url.4
Replace hellosign-embedded with an iframe
Pass only the
signingUrl from your backend to the browser.5
Point webhooks at Formable
Register a URL in Settings. See Webhooks.
What’s similar
Much of the Dropbox Sign model still maps cleanly:- You still create a signature request on the server, then open a short-lived URL in the browser.
- Templates remain the reusable document definition. One template powers many sends.
test_mode/testModekeeps integration traffic out of billing. Test mode documents are watermarked and are not legally binding.- You still download a completed PDF after everyone has signed.
- Signing URLs are meant to be generated just in time, not stored long-term. Dropbox Sign
sign_urlvalues last about 60 minutes and same with FormablesigningUrl.
What’s different
Plan for these shifts early so you don’t recreate Dropbox Sign patterns that Formable doesn’t use:
Formable is intentionally template-first. If your Dropbox Sign code uploads PDFs on every
create_embedded, move that upload into a one-time (or occasional) template create/edit step, then send with templateId.
Concept map
Endpoint map
Auth
Dropbox Sign typically uses HTTP Basic:fmbl_:
Migrate the flow
1. Create the signature request
Dropbox Sign (create_embedded_with_template):
Response
signers array on every create. Each signer needs email, name, and role (matching template field roles). sender is optional and defaults to the org owner. Use fields: [{ fieldId, value }] for prefills (field IDs come from the template editor). Save each signer’s recipientSignatureId to mint their signing URL.
2. Generate the signing URL
Dropbox Sign — per-signersignature_id:
recipientSignatureId:
Response
409.
3. Embed on the client
Dropbox Sign:postMessage (no SDK, no client_id, no skipDomainVerification):
4. Detect completion and download the PDF
UseonSigningComplete to update the client immediately. Prefer the document_completed webhook (or poll signature request status until Completed) before downloading. You can also read the event stream.
Response
409.
Webhook verification differs from Dropbox Sign’s event_hash. Formable signs the raw body with HMAC-SHA256 and sends the digest in Content-Sha256. See Verifying webhooks and Webhooks overview.
Differences to plan for
Template-first, not file-on-send
Template-first, not file-on-send
Dropbox Sign can attach files on
create_embedded. Formable expects a prepared template first. Upload once, place fields, then send with templateId.No hellosign-embedded — use iframe postMessage
No hellosign-embedded — use iframe postMessage
Load
signingUrl in an iframe. Listen for onSigningComplete / onSigningError instead of Dropbox Sign client events such as sign or finish. Confirm completion with webhooks or status polling before downloading the PDF.Signing URL is per signer
Signing URL is per signer
Dropbox Sign issues a
sign_url per signature_id. Formable does the same: use each signer’s recipientSignatureId from the create response with create signing URL.Roles map directly
Roles map directly
Dropbox Sign
signers[].role maps to Formable signers[].role. Assign matching roles to required fields in the template editor, then pass the same role names when you create the embedded signature request.Checklist
1
Create a Formable API key
In Settings. Store it as a server secret.
2
Prepare templates
Recreate documents and fields — or migrate the embedded template flow separately.
3
Swap create + sign URL calls
Replace
create_embedded* and embedded/sign_url with Formable endpoints. Use signers with roles on create; mint URLs from each recipientSignatureId.4
Replace hellosign-embedded with an iframe
Pass only the
signingUrl from your backend.5
Point webhooks at Formable
Handle
document_completed / document_viewed and verify Content-Sha256.Next steps
Embedded templates migration
Map
create_embedded_draft and edit_url to Formable.Non-embedded signing migration
Map
send / send_with_template to Formable email delivery.Embedded signing walkthrough
Full Formable signing walkthrough.
Webhooks
Register endpoints and understand delivery.