sendlang.com valid
SendLang
SendLang is the home of two small languages for lifecycle email. SendQL is a query language that describes WHO a message is for — one query is a single boolean expression over contact attributes, the raw event and activity stream, consent, and list membership. SendFlow is a workflow language that describes WHAT HAPPENS to a contact over time, stored in .flow files. SendFlow is a strict superset of SendQL: every where/when/if/until condition in a workflow is a real SendQL predicate. This site is
Their llms.txt
The beginning of the file, from our validated copy saved 2026-10-26T09:45:48.558Z. Cached copy · Source on sendlang.com
# SendLang
> SendLang is the home of two small languages for lifecycle email. SendQL is a query language that describes WHO a message is for — one query is a single boolean expression over contact attributes, the raw event and activity stream, consent, and list membership. SendFlow is a workflow language that describes WHAT HAPPENS to a contact over time, stored in .flow files. SendFlow is a strict superset of SendQL: every where/when/if/until condition in a workflow is a real SendQL predicate. This site is the canonical syntax reference for both. Both languages are designed to be authored and refactored by coding agents: the grammar and the reserved-word list are generated from the parsers, every error carries a line, a column and a named fix, and `sendflow-lint` is the loop you should iterate against before proposing a change.
Every page on this site is available as Markdown at its own URL with `.md` appended
(e.g. /docs/sendql/events → /docs/sendql/events.md). The links below point at those.
The full corpus in one file is at /llms-full.txt.
## Reading the code samples
Samples are tagged, and the tag matters:
- A `sendql` or `sendflow` block is real, valid source. Every one of them is
parsed and type-checked against the actual parsers when this site is built.
- A block introduced by **Rejected** is source the parser REFUSES. It is shown
to explain an error. Do not copy it.
- A block introduced by **Syntax form** is a shape, not a runnable program.
## If you are an agent writing a segment or a workflow
Read /docs/agents.md first — it is written for you. The short version:
- The registry (your account's attributes, events, activities, topics, templates
and lists) is the ground truth for every name. Ask for it; do not invent names.
- Run `sendflow-lint -registry registry.json <files>` before proposing the change.
Exit 0 means the workflow is real; anything else is a positioned message to fix.
- Then `sendflow-fmt -w` it, and let a human read the diff. Nothing sends until
they merge.
## Two facts worth knowing before you write any SendQL
1. **Events vs activities.** The eight EVENTS are a closed set about email you
sent — send, delivery, open, click, bounce, complaint, reject, delivery_delay —
and are written bare. Anything the contact did in YOUR product is an ACTIVITY,
written with a qualifier: `activity.order`, `activity.login`. Writing
`exists(order)` is an error: `unknown event "order"`.
2. **Absence.** A missing value does not compare. `attr.plan != "pro"` does NOT
match a contact with no plan, and `last(open) < now - 90d` excludes everyone
who never opened at all. To include them, say so:
`last(open) < now - 90d or count(open) = 0`.
## Introduction
- [SendLang](https://www.sendlang.com/docs.md): Two small languages for lifecycle email — SendQL says who a message is for, SendFlow says what happens to them over time.
- [Core concepts](https://www.sendlang.com/docs/concepts.md): The data model both lang
…
Machine-readable: GET /v1/resolve?q=sendlang.com · GET /v1/domain/sendlang.com · this page as Accept: application/json or text/markdown · MCP lookup_domain
Automatically discovered from public files. Inclusion does not imply endorsement or publisher participation.
Own or manage this website?
If you own or manage sendlang.com, you can update its listing and review file health, discovery activity and score history.
Manage this listing — optional
What verification unlocks
See how your site is discovered—and control what agents see.
- See your website in the map
Review your indexed topics, nearby publishers sharing headings, measured listing exposure and map snapshots in a private report for your website.
- Control what agents see
Edit your listing description, tags, public contact details and additional llms.txt paths. Publish your terms for automated access, attribution and pricing.
- Make your profile eligible for search
A valid, listed, unblocked, verified profile can appear in our publisher sitemap and become eligible for search-engine visibility. Search engines decide what to index and rank.
- Appear in our llms-full.txt
Eligible verified publishers are listed by name, with their file links and summaries, in the service overview agents can read.
Free. No account registration, backlink or payment required. Public discovery remains available without verification.
Let your coding agent verify it
If your coding agent is authorized to manage this website, paste these instructions into it.
Claim my listing on Agent Web Map for sendlang.com:
1. POST https://agentwebmap.com/v1/sites/sendlang.com/claims and keep claim_id and claim_secret private.
2. Publish the verification line "AgentWebMap verification: <token>" (token from step 1) in https://sendlang.com/llms.txt, or use the DNS, meta-tag or well-known method the response describes. This only verifies the listing; your website and domain remain yours.
3. POST https://agentwebmap.com/v1/sites/sendlang.com/verify with {"claim_id": "...", "claim_secret": "..."}.
4. Save the api_key from the answer; it manages the listing (PATCH https://agentwebmap.com/v1/sites/sendlang.com).
MCP equivalent: tools begin_ownership_claim, then verify_domain, at https://agentwebmap.com/mcp. Docs: https://agentwebmap.com/docs#verifyCorrections or removal requests: contact the directory.