Standalone relationship connections
Tending can use selected external work systems directly. Attention is not required.
The boundary is consistent across providers:
external activity
↓
temporary relationship context
↓
known relationship match
↓
review question
↓
human decides whether a Moment is worth keeping
External records do not automatically become Tending Moments.
Google Calendar
Existing Calendar context uses a bounded meeting window and exact attendee email matching.
Required configuration:
GOOGLE_CONTEXT_CLIENT_ID=
GOOGLE_CONTEXT_CLIENT_SECRET=
CONTEXT_OAUTH_STATE_SECRET=
CONTEXT_ENCRYPTION_KEY=
The Google OAuth redirect is:
https://<tending-host>/api/context/google/callback
ClickUp
ClickUp uses OAuth and reads a bounded window of recent task activity from Workspaces the user explicitly authorises. Tending only retains task context when an assignee/creator exactly matches a known relationship email.
Required configuration:
CLICKUP_CONTEXT_CLIENT_ID=
CLICKUP_CONTEXT_CLIENT_SECRET=
Redirect:
https://<tending-host>/api/context/clickup/callback
Tending does not write to ClickUp.
Gmail
Gmail is an optional bounded mailbox connection for relationship context. It uses the same Google OAuth client configuration as Calendar, with an additional read-only Gmail scope.
Redirect:
https://<tending-host>/api/context/gmail/callback
Enable the Gmail API in the Google Cloud project used for the OAuth client.
Tending checks at most the most recent 50 messages from the previous 14 days. For each message it keeps only:
- subject;
- bounded text preview;
- participants;
- sent/received direction;
- timestamp;
- attachment name/type/size metadata.
Attachment contents are not read.
Ambient Gmail is intentionally stricter than deliberate BCC/forward capture: a message only becomes temporary relationship context when a participant email exactly matches a known Tending relationship. Names mentioned in the body are not enough.
Matched messages create a private review question, never a Moment.
Email BCC / Forward
The provider-agnostic email route remains available alongside Gmail. Use it when you want to deliberately send one message to Tending without connecting a mailbox, including from Gmail, Proton Mail or another provider.
Required configuration:
AUTH_RESEND_KEY=
RESEND_WEBHOOK_SECRET=
EMAIL_INBOUND_DOMAIN=in.tending.network
Configure the Resend receiving domain (a Resend-managed receiving domain can be used for testing) and create an email.received webhook pointing to:
https://<tending-host>/api/context/email/inbound
Each Tending user/organisation gets a random private address. You can either:
- BCC that address on an outbound email you want Tending to notice; or
- forward an existing message to it.
The webhook:
- verifies the Resend/Svix signature and five-minute replay window;
- accepts mail only when the sender is the email address of the Tending account that created the forwarding source;
- retrieves the body from Resend only after verification;
- retains only a bounded text preview when it can be tied deterministically to a known relationship;
- ignores attachments;
- never creates a Moment automatically.
BCC/forward is the deliberate capture route; Gmail is the bounded ambient route. Both feed the same relationship-review boundary and neither creates a Moment automatically.
Slack
Slack uses a message shortcut, not workspace search or history ingestion.
Create/configure a Slack app with:
- bot OAuth scopes:
commands,users:read,users:read.email; - OAuth redirect URL:
https://<tending-host>/api/context/slack/callback
- Interactivity Request URL:
https://<tending-host>/api/context/slack/interactions
- a message shortcut named Send to Tending with callback ID:
tending_relationship_context
Required Tending configuration:
SLACK_CONTEXT_CLIENT_ID=
SLACK_CONTEXT_CLIENT_SECRET=
SLACK_SIGNING_SECRET=
When a connected user chooses Send to Tending on a Slack message, Slack sends that one message to Tending. Tending verifies Slack's request signature, maps the invoking Slack user to their own Tending connection, optionally resolves the selected message author's email, and creates a review prompt only when it can tie the message to a known relationship.
No channel history or workspace search is requested or copied.