Migrate Nylas Agent Accounts to Bird Mailboxes
Nylas supports both hosted Agent Account mailboxes and connected user accounts. This guide moves an agent-owned inbox to Bird; retain connected-account access for features that still read a user’s existing mailbox.
Map the Agent Account
An Agent Account uses a grant_id and the /v3/grants/{grant_id} API surface. Inventory the actual message, thread, folder, draft and attachment operations your application uses. See Nylas Agent Account mailboxes and supported endpoints.
| Nylas integration | Bird migration action |
|---|---|
| grant_id for a hosted mailbox | Associate a new mbx_ ID with the application owner. A Nylas grant cannot authorize a Bird request. |
| Messages and threads under the grant | Save Bird thr_, rem_ and em_ IDs alongside the business case. Preserve the old grant/message references for history. |
| Send with reply_to_message_id | Reply through email.threads.messages.reply(threadId, receivedMessageId, body). Bird derives the reply recipients and threading headers. |
| Folders, drafts and account policies | List the required behavior individually. Use Bird's documented labels and receive policy where appropriate; keep review state in your application. |
| message.created notifications | Subscribe to Bird's mailbox-received event and verify the new signature and payload. Do not reuse the old event parser. |
| Calendar, contacts or mail-client access | Treat those dependencies separately. Moving the inbox workflow does not migrate them. |
Preserve the conversation
Keep the application case ID stable across the move. For new Bird mail, save the mailbox and thread IDs with that case. For older conversations, keep an archive link or provider-qualified reference accessible to the support team. Do not derive conversation identity from the subject alone.
Test two unrelated messages with identical subjects, a reply to the first message and a forwarded message. Verify which conversation each belongs to in the actual returned thread. Use Nylas threading guidance to identify behavior your previous adapter relied on.
Build the Bird workflow
Start with the complete Node.js support inbox or Python support inbox. Each creates a mailbox, receives a message, records an application-owned support case and acknowledges it in the original thread. A later message updates that case; a repeated message does not send another acknowledgement.
The examples keep a small local checkpoint for development. Put the same case, incoming-message and outgoing-operation identities in your application's durable store before running multiple workers. Keep the business action separate from the email: acknowledging a refund request does not issue a refund.
Then add the signed event receiver and attachment workflow. Store the received-message ID with the case before acknowledging the event. Retrieve attachment metadata and bytes through the documented operations; keep any retained files under your application's access and retention rules.
Move one address or customer cohort
Confirm the address customers will use and the return address on a real reply. A new mailbox does not automatically move your existing domain, grant or historical messages.
Run one worker owner per customer task during the switch. Test a repeated event, a new reply while the worker is busy and a lost send response. Record the resulting incoming ID, case ID and outgoing ID, then inspect the recipient's actual conversation.
Reconcile outstanding Nylas jobs before disabling their consumer. Keep the prior archive and any still-needed connected-account integration available. If the new path fails, pause new Bird assignments and resolve in-flight operations before restoring the old route.
Next steps
- Compare Bird and Nylas
- Mailbox integration and retention
- Resolve receiving and reply problems
- All mailbox migration guides
- Mailbox resources
- Email pricing
Related resources
Continue with the documentation, guides and examples for this topic. Resources are in English.
Watch the guideGetting started with emailExplore the capabilityEmailFollow the learning pathBuild your first integrationImplementation guideSend your first email
Try the practice and get an implementation brief