Turn signed offer letters in Dropbox Sign into BambooHR new hires

Every 30 minutes, pull just-signed offer letters from Dropbox Sign, create the employee in BambooHR with the signed PDF attached, and welcome them in Slack.

Agentic Task
Dropbox SignBambooHRSlack BotHR & PeopleOperationsOnboarding AutomationDocument Processing
PromptCreate

Every 30 minutes, check Dropbox Sign for offer letters that have just been fully signed and turn each one into a complete new hire setup in BambooHR, then announce the hire in Slack.

Trigger: cron, every 30 minutes.

Step 1 — find newly signed offer letters in Dropbox Sign. Use Dropbox Sign's List Signature Requests, paging through results until the list_info pages are exhausted or until you reach requests that finished before the last successful run. For each request, only keep ones where is_complete is true AND the title or the template_id indicates an offer letter (the user should be able to configure either a title keyword like "Offer Letter" or a specific template_id). Then filter again to only the ones whose signed_at timestamp is newer than the last run.

Step 2 — for each matching request, call Get Signature Request to pull the signer name, signer email, signed_at timestamp, and any custom merge fields (job title, start date, manager, department). Skip anything whose signature_request_id has already been processed — keep an idempotency record so the same request never creates a duplicate employee.

Step 3 — call Download Signature Request Files (PDF) to grab the signed offer letter PDF.

Step 4 — create the new hire in BambooHR with Create Employee using the parsed identity and job fields (first name, last name, work email, job title, hire date / start date, supervisor, department). Read the new employee's id from the Location header on the 201 response. If a field is missing from the signed offer, leave it blank rather than guessing.

Step 5 — call BambooHR's Upload Employee File on the new employee id to attach the signed offer letter PDF under a configurable category (default "Onboarding"). If the category doesn't exist yet, create it once with Create Employee File Category and reuse it on future runs.

Step 6 — post a Slack message via Slack Bot's Send a Message to a configurable channel (default #people) announcing the new hire. Include their name, role, start date, and a link back to the Dropbox Sign signature request. Use Slack mrkdwn formatting.

Behavior rules: (1) idempotent on signature_request_id — never create the same employee twice; (2) only operate on offer-letter requests so unrelated signed agreements (NDAs, vendor contracts, etc.) are never pulled into HR; (3) handle missing custom fields gracefully by leaving them blank, never inventing values; (4) if BambooHR returns a 409 conflict on duplicate work email, log it and skip rather than crashing the run.

Configurable inputs the user should be able to set: offer letter match rule (template id and/or title keyword), BambooHR file category name, Slack channel name, run cadence.

Additional information

What does this prompt do?
  • Watches Dropbox Sign for offer letters that have just been fully signed and acts on each one within 30 minutes.
  • Creates the new hire in BambooHR with the name, email, job title, start date, manager, and department captured from the signed offer.
  • Attaches the signed offer letter PDF to the employee's BambooHR profile under an Onboarding folder so HR has the paper trail in one place.
  • Posts a welcome announcement in your People channel in Slack with the new hire's name, role, start date, and a link back to the signed Dropbox Sign request.
What do I need to use this?
  • A Dropbox Sign account where your offer letters get sent for signature.
  • A BambooHR account with permission to create employees and upload employee files.
  • A Slack workspace and the name of the channel where new hire announcements should go (for example, #people).
  • A clear naming convention for offer letters (a recognizable title, or a dedicated Dropbox Sign template) so the workflow can tell offers apart from other signed agreements.
How can I customize it?
  • Change how often the workflow runs. Every 30 minutes is the default, but you can move to every 15 minutes for faster onboarding or once an hour if your volume is light.
  • Adjust how the workflow identifies offer letters. Match on a Dropbox Sign template, a keyword in the title like Offer Letter, or both.
  • Pick which BambooHR fields get filled in from the signed offer. Job title, start date, manager, and department are common, but you can map any custom fields you collect during signing.
  • Choose the BambooHR file category the signed PDF lands in. Onboarding is the default, but Offer Letters or Employment Agreements works too.
  • Set the Slack channel and tweak the welcome message tone, emoji, or the fields you want to highlight.

Frequently asked questions

Will it pick up agreements that aren't offer letters, like NDAs or vendor contracts?
No. The workflow only acts on signature requests whose title or template you've flagged as an offer letter. Other signed agreements are ignored.
What happens if the same offer letter is checked twice?
Each signed request is tracked by its unique signature ID, so once a new hire has been created in BambooHR, the workflow skips that request on every future run.
What if the offer letter is missing a start date or manager?
The workflow leaves missing fields blank in BambooHR rather than guessing, so your HR team can fill them in later without overwriting good data.
Can I send the announcement to a private channel?
Yes, as long as the Slack bot is invited to that channel. Public channels work without any extra setup.
Do I have to use Dropbox Sign templates for this to work?
No. Templates make matching cleaner, but a consistent title like Offer Letter for Jane Doe is enough for the workflow to identify the right requests.

Stop rekeying signed offer letters into BambooHR.

Connect Dropbox Sign, BambooHR, and Slack once, and Geni handles the new hire setup the moment the offer is signed.