Pabbly Connect and Groundmail

Send email from a Pabbly Connect workflow with the API by Pabbly action, which makes an HTTP request to the Groundmail API. No Groundmail app is needed.


Prerequisites

  • A Groundmail account with a verified sending domain.
  • A Groundmail API key. Create one under API Keys in the dashboard. Choose Send only, and limit it to your sending domain with the allowed domains option. Anyone who can edit the workflow can read the key, so keep its access narrow. See API keys.
  • A Pabbly Connect workflow with a trigger that provides the recipient's email address.

1. Add the action

  1. In your workflow, add an action step and search for API by Pabbly.
  2. Choose the POST action event.
  3. Fill in the step. Field names can differ slightly between Pabbly's interface versions, so match them by meaning:
Pabbly setting Value
Endpoint URL https://api.groundmail.dev/emails
Payload type JSON
Headers Authorization = Bearer gm_…
  1. Add the body fields, using values from your trigger where you need them:
Field Value
from notifications@yourdomain.com
to The recipient's email from your trigger
subject Your subject line
html The HTML body, for example <p>Your order has shipped.</p>
text A plain-text version of the same message

from must be on a verified domain. At least one of html or text is required. See Emails for every field, including reply_to, cc, bcc and tags.

If you would rather paste the whole body, choose the Custom Request action event and enter the JSON in the data section, or use Pabbly's cURL import with this request:

curl -X POST https://api.groundmail.dev/emails \
  -H "Authorization: Bearer gm_…" \
  -H "Content-Type: application/json" \
  -d '{"from":"notifications@yourdomain.com","to":"user@example.com","subject":"Hello","html":"<p>Hi</p>"}'

To make a retried run harmless, add an Idempotency-Key header with a value that is unique per event (an order id, for example). Groundmail returns the original response instead of sending twice for 24 hours. See Idempotency.


2. Test it

Use Send Test Request (or Save and Send Test Request) on the step. With a test key (gm_test_…, created by ticking Test key on the API Keys page), Groundmail runs the whole pipeline but delivers nothing, so any recipient works. A successful response looks like this:

{ "id": "msg_…", "status": "sent", "test": true }

You can also use a live key and send to delivered@simulator.groundmail.dev, which never reaches a real inbox. Use bounce@simulator.groundmail.dev to see a hard bounce. The full list is in Testing. The email shows up under Emails in the Groundmail dashboard. When you are done, replace the test key with a live key.

To react to delivery, bounces or complaints, create a webhook that points to a Pabbly webhook trigger URL.


Troubleshooting

401 unauthorized. The header value must be Bearer gm_…, with the word Bearer and a space. Check the key is active on the API Keys page.

403 forbidden. The domain in from is not verified on your account, or the account is still on the sandbox sender, which only sends to your own account email. Verify the domain under Domains. A 403 domain_not_allowed means the key is limited to other domains, and insufficient_scope means the key cannot send.

400 validation_error. A required field is missing or empty, or to is not a valid address. The message and details in the response say which field. See Errors.

422 validation_error with suppressed. Every recipient is on your suppression list or was held back as unable to receive mail. Do not retry the same address; see Suppressions.

429. You hit a sending limit. See Sending limits.