Overview
Everything here is set up in Settings, Integrations:
- Calendar feed: a private link Google Calendar or Apple Calendar subscribes to. Read only.
- Email to task: your own secret address. Forward or send an email and it becomes a task.
- iOS Shortcut: “Add to Gumhop” for Siri and the share sheet.
- Slack and Discord:
/gumhop add …, a “Save message to Gumhop” shortcut, and optional DM pings. You link an account by typing the one-time code Settings shows. - Webhooks and the API: for Zapier, Make and n8n through their generic webhook and HTTP blocks.
There are no official Zapier or Make apps; the recipes below do the same job. Two-way Google Calendar sync, GitHub and Notion aren't supported.
Calendar feed
Turn on Calendar feed in Settings to get a private link ending in .ics. It lists your open tasks that have a due date (from 30 days ago to a year ahead), plus the next 90 days of any repeating task on a fixed schedule. Tasks with a time are 30-minute events; the rest are all-day. Completed tasks drop off on the next refresh.
“Your” tasks means ones assigned to you in any space you belong to, and ones you created that nobody is assigned to. Anyone with the link can read those tasks, so treat it like a password.
- Apple Calendar (iPhone, iPad, Mac): tap Add to Apple Calendar. Or copy the link and add it under Settings, Calendar, Accounts, Add Account, Other, Add Subscribed Calendar.
- Google Calendar: on a computer, click Add to Google Calendar, or in Google Calendar choose Other calendars, +, From URL, and paste the link. The Google Calendar phone app can't add subscriptions, but it shows them once added.
| Calendar | How fast changes show up |
|---|---|
| Google Calendar | On Google's schedule: usually every few hours, sometimes up to a day. It can't be forced. |
| Apple Calendar | As often as you set it (down to every 5 minutes on a Mac). |
Reset link makes the old link stop working immediately; subscribe again with the new one. Turn off does the same without a new link.
Email to task
Turn on Email to task in Settings to get an address like k3v9…@in.gumhop.com. Anything sent to it becomes a task:
- The subject becomes the task, with “Re:” and “Fwd:” removed. If AI parsing is on, dates, times and priority are picked up (“call Sam tomorrow 3pm”).
- The body becomes the notes (up to 8,000 characters, signature removed), followed by who sent it and when.
- Attachments aren't imported; their file names are listed in the notes.
- You choose which list tasks land in. The default is your first list.
- Gumhop never replies to the sender. Check “Recent emails” in Settings to see what happened.
Gmail
- In Gmail on a computer: Settings, See all settings, Forwarding and POP/IMAP, Add a forwarding address.
- Paste your Gumhop address. Gmail sends it a confirmation email.
- Gumhop catches that email and shows the confirmation codeas text at the top of the Email to task section in Settings, and in “Recent emails”. No task is created from it, and Gumhop sends you no push or email about it.
- Type the code into Gmail and click Verify. Gumhop shows you the code and nothing else: it never confirms forwarding for you, and it never shows a link out of an email it received, because a sender chooses where that link goes.
- Don't forward everything. Create a filter instead (for example, has the label or is starred, or from one sender), choose “Forward it to”, and pick your Gumhop address. Or just forward single emails by hand.
Outlook.com and iCloud Mail
Outlook.com: Settings, Mail, Forwarding (or a rule with “Forward to”); no code is needed. iCloud Mail: Settings, Rules, add a rule that forwards to your Gumhop address. From any mail app you can also just forward an email.
The address is the password
Anyone who knows the address can add tasks to your account.That is the whole security model, and it is deliberate: nothing else about an email can be trusted, because a sender writes every part of the message, the From line and the authentication headers included. So treat the address like a password — don't post it or put it in a shared document, and if it gets out, Reset address in Settings kills the old one instantly and gives you a new one.
Filter by senderis optional tidying, not a lock: list the addresses you expect (your account email plus up to 10 more) and other mail is skipped. Because the From line can be typed by anyone, it keeps out noise rather than an intruder, and no security decision rests on it. Forwarded mail keeps its original sender, so list that sender, not yourself. Gmail's forwarding confirmation always gets through. Up to 30 emails an hour and 200 a day are turned into tasks; the rest are skipped.
iOS Shortcut
Home-screen web apps on iPhone can't appear in the share sheet, so Gumhop uses a Shortcut instead. In Settings, iOS Shortcut, tap Set up to create a dedicated key and follow the guide. The shortcut calls the API:
POST https://www.gumhop.com/api/v1/tasks
Authorization: Bearer gh_live_…
Content-Type: application/json
{ "text": "<Shortcut Input>", "parse": true, "source": "shortcut" }- In Shortcuts, tap +, and name it Add to Gumhop (that's the Siri phrase).
- In Details (i), turn on Show in Share Sheet; accept Text, URLs and Safari web pages.
- In the Receive block, set “If there's no input” to Ask For Text: “What should I add?”
- Add a Text action with your key and rename its output “Gumhop key”.
- Add Get Contents of URL with the request above: Method POST, the two headers, and a JSON body with
text= Shortcut Input,parse= true andsource=shortcut. - Get Dictionary Value
task, thentitle, and Show Notification “Added: …” (Show Alert if empty). - Run it once, then say “Hey Siri, Add to Gumhop”.
Webhooks recap
Set one webhook URL in Settings, API keys & webhooks. Gumhop POSTs JSON for task.created and task.completed:
{
"event": "task.completed",
"task": { "id": "uuid", "title": "…", "status": "done", "priority": 2, "pinned": false,
"due_date": "2026-07-01", "due_time": "14:30:00", "notes": null, "source": "app",
"ai_status": "none", "list_id": "uuid", "chips": [], "completed_at": "…", "created_at": "…" }
}- With a signing secret, each delivery has
X-Gumhop-Signature-256: sha256=<hmac>of the raw body. - One webhook URL per account. Send it to a single Zap or scenario and branch with Zapier Paths or a Make Router.
- Events fire only for tasks you created, including when a teammate completes one.
- The URL must be https on a public host.
- Your automation rules run on tasks written through the API, email, the Shortcut and the chat bots too, not just ones you touch in the app.
Zapier
Trigger from Gumhop: add Webhooks by Zapier, choose Catch Hook, and paste the hook URL into Settings, API keys & webhooks. Click “Send test ping” so Zapier learns the fields, then add a Filter on event (for example, exactly matches task.completed).
Create a Gumhop task: add Webhooks by Zapier, choose POST. URL https://www.gumhop.com/api/v1/tasks, payload type JSON, data text = your mapped field and parse = true, header Authorization = Bearer gh_live_….
{ "text": "{{mapped field}}", "parse": true }Starred Gmail email to a task
Gmail, New Starred Email, then POST with text = the subject. (Or use Email to task.)
Completed task to Slack or Discord
Catch Hook, Filter event = task.completed, then send a channel message with task.title.
Completed task to a Google Sheets row
Catch Hook, Filter on task.completed, then Create Spreadsheet Row with the title and completed_at.
Form submission to a task
Google Forms or Typeform, New Response, then POST with text = a summary of the answers.
Calendar event to a prep task
Google Calendar, Event Start (for example, 1 day before), then POST text = “prep for ” + the event title + “ today”.
RSS item to a task
RSS by Zapier, New Item in Feed, then POST text = “read ” + the item title + the link.
Optional: check the signature in a Code by Zapier step.
// Code by Zapier (JavaScript). Input data: body = raw body, sig = X-Gumhop-Signature-256
const crypto = require("crypto");
const expected = "sha256=" + crypto.createHmac("sha256", "YOUR_SIGNING_SECRET")
.update(inputData.body).digest("hex");
output = { valid: expected === inputData.sig };Make
Trigger: add Webhooks, Custom webhook, copy its URL into Gumhop's webhook setting, and send a test ping so Make learns the data structure. Add a Router with a Filter on event per branch.
Action: add HTTP, Make a request: URL https://www.gumhop.com/api/v1/tasks, method POST, header Authorization: Bearer gh_live_…, body type Raw, content type JSON, and the request content below. The Zapier recipes above work the same way.
{ "text": "{{mapped field}}", "parse": true }n8n
Trigger: a Webhook node (POST). Use its production URL as your Gumhop webhook, then an IF or Switch node on {{$json.body.event}}.
Action: an HTTP Request node: POST https://www.gumhop.com/api/v1/tasks, header auth Authorization: Bearer gh_live_…, JSON body:
{ "text": "{{mapped field}}", "parse": true }Limits
- The API allows 120 requests a minute per account; beyond that it answers 429.
- AI parsing shares a per-account budget with in-app capture. Over it, tasks are still created, just unparsed.
- Webhooks are sent once, without retries. For anything critical, also poll
GET /tasks. - Email to task: 30 emails an hour and 200 a day per account.
Troubleshooting
- 401: the key is missing, mistyped or revoked. Create a new one.
- 404 when creating: the
list_idisn't a list you can add to. - Webhook not firing: the URL must be https on a public host, and events only fire for tasks you created (not ones a teammate created).
- Calendar not updating: Google refreshes on its own schedule (up to a day). Apple follows your refresh setting.
- Emailed task missing: check Recent emails in Settings: blocked sender, rate limited, or auto-reply ignored.