Skip to content

Checks: what refuses one send

The nine compile checks, the line dev prints for each, and the per-send codes each call can refuse with.

Nine checks run when a file compiles, and dev names the line that fails. At send time the same lines hold as typed refusals, one code per check.

dev, one line per check
$ npx startup-builder dev
metrics/q4.mdx:5  S1  keyResults[1].metric: demo-requests has no parent chain to arr. Set its parent: opened-deals-and-trials.
sequences/cold-email-thread-founder.mdx:5  S2  steps.second sends with no code-tier Check. Add guards: [customer-collision].
audiences/lapsed-leads.mdx:4  S3  exclude: drops suppressed. Suppressed Contacts never enter a List: put it back.
plays/lead-reactivation.mdx:5  S4  budget: 48 USD a month is over Dana’s Mandate of 0. Sign it with Mandate.authorize, or the first send waits on an Approval.
plays/lead-reactivation.mdx:4  S5  on: Lead.lapsed is not a registered Event. Did you mean Offer.trialed?
content/webinars/60-day-notices.mdx:4  S6  distribute.posts.handles: dana-x is not a connected account. Did you mean dana-linkedin?
plays/cold-email.mdx:5  S7  body: “sound friendly” compiles to no Evaluator. Write what a draft must hold or must leave out.
experiments/pro-price.mdx:3  S8  varies: offers/pro.mdx price, assigned by contact. Assign by market or by time.
agents/sales/prospector.mdx:4  S9  results: reply-count is not a node or leaf of the ARR tree. Did you mean positive-reply-rate?

Checks

CheckIt holdsAt send time
S1The Metric’s parent chain reaches arr: the Result card’s path.—
S2Every send passes a code-tier Check before it goes.customer-collision, domain-authenticated, mailbox-warm, price, claim, spam-brake, owned-by-a-person
S3Lists leave out suppressed Contacts and read Consent.suppressed-contact, no-consent, consent-stop, customer-collision
S4The budget fits the Mandate, or opens an Approval.spend-limit
S5Every on: names a registered Event.—
S6Content from and distribute handles resolve.—
S7Every body rule compiles to an Evaluator that runs as POST /{namespace}/actions/{action}/evaluate on each draft before its window opens.provenance-hold, fact-check, content-evals, claims-resolve, approved-pages
S8An Experiment that varies an Offer’s Price assigns by market or by time.price-split-by-buyer
S9Each Key Result names a node or leaf of the ARR tree, and a seat’s Key Result sits in its band.—

Refusals

The call it guardsCodes
POST /{namespace}/agreementsborrowed-first, evidence
PATCH /{namespace}/audiences/{id}audience-guard
POST /{namespace}/contacts/{contact}/enrichcustomer-collision
POST /{namespace}/contacts/{contact}/enrollno-consent, suppressed-contact
POST /{namespace}/content/{content}/publishcontent-evals, fact-check
POST /{namespace}/conversations/{conversation}/answerclaim
POST /{namespace}/deals/{deal}/advancestage-fields
POST /{namespace}/deals/{deal}/proposeno-meeting-held
POST /{namespace}/messages/{message}/broadcastprovenance-hold, spam-brake
POST /{namespace}/messages/{message}/scheduleconsent-stop, domain-authenticated, double-opt-in, mailbox-warm, visit-in-copy
POST /{namespace}/offers/{offer}/publishcontribution-floor
POST /{namespace}/posts/{post}/publishclaims-resolve
POST /{namespace}/posts/{post}/scheduleembargo
POST /{namespace}/quotes/{quote}/sendprice
POST /{namespace}/renewals/openrenewal-notice
POST /{namespace}/reviews/{review}/publishdisplay-consent
POST /{namespace}/subscriptions/{subscription}/unsubscribeexit-never-waits
Any send a Play startsabuse, accept-guard, activation-event, address-cap, admin-lock, advice-review, agent-label, agreement, allocation-fence, announced-only, approved-pages, ask-budget, audience-age, audience-rest, authorship, availability, bank-gap, bar-cap, baseline, batch-cap, billing-connected, binding-terms, blank-over-guess, boundary, buyer-keeps, buyer-stop, capacity, capacity-drop, capture-path, category, cell-floor, change-feed, cherry-pick, claims-hold, class-cap, click-first, clinician-hold, cloak, cluster, code-test, coherence, collection-record, collision-hold, comparison-claim, concentration, connections-file, consent-withdrawn, contact-lease, conversion-send, copy-deletion, correction-cap, correctness, count-check, count-floor, creator-ceiling, credit, crisis-hold, cross-sell-off, customer-ask-cap, customer-side, deadline-drop, decay, deploy-freeze, disclosure, disclosure-hold, dispute-hold, distinctness, do-not-call, domain, dormant-address, draft-match, drag, drift-hold, duplicate, duplicate-page, editorial, engagement-ceiling, engagement-gate, evaluator, evaluator-lock, exclusive, expiry-hold, fabrication-veto, face-voice-consent, field-scope, finding, fingerprint, first-party, fix-gate, flag-gate, flake, fraud, fraud-hold, fresh-anecdote, fresh-reading, fresh-reads, gift-approval, gift-cap, gift-connection, give-ask-guard, grade-floor, handle-connected, held-out-gate, hold, holdout-floor, hospitality-cap, import-refusal, inbound-source, incident-hold, independence, insider, intake, invitation-rest, invite-bounce, join-raid, keep-first, kitchen-notes, knowledge, knowledge-hold, label-backlog, late-note, late-send, launch-readiness, leak-scan, license-allowlist, limit-on-offer, limit-truth, line-claim, line-on-pricing, lint-block, listing-cap, listing-guard, live-answer, mark-cap, market, market-hold, marketing-purpose, mention-budget, metadata, method, movement-limit, named-score, no-amplification, no-cash-or-travel, no-conditional-seat, no-contact, no-reset, notice, notice-at-join, number-match, number-token, obligation-void, old-employer, opinion-bank, opt-in, opt-out, organization-lock, organization-stop, organizer-list, original-audience, outcome-event, overlap-terms, owned-by-a-person, owner, ownership, ownership-stated, paid-slot, partner-box, partner-claim, pass-sheet-lock, paying-user, payout-limit, pending-ceiling, pester, pick, pilot-cap, pitch-cap, plan-lock, portfolio-caps, pre-registration, prep-holds, price-match, price-split-by-buyer, price-sync, probe-limit, problem-cost, prompt-cap, proof, proof-drift, provenance, provision-throttle, public-fetch, question-cap, quiet-hours, raise, re-run-cap, read-lock, read-only, readability, readiness, recompute, reconcile, recording, recording-hold, recording-off, regression, removals-first, render-check, reply-hold, resolution-stop, review-ask-audit, review-reply, reward, reward-hold, rights-hold, rival-name, role-unstaffed, room-cadence, room-rules, sample-rule, sandbox-connected, sandbox-only, scale-gate, screening, seeded-request, self-exclusion, session-gate, shadow-hold, sheet-lock, ship-date, side-effect-hold, slot-id, snippet-pause, source-change, source-consent, stale-fact, stale-output, stale-snapshot, status, steering, step-gate, steward-line, store-billed, store-rule, stripe-revenue, summons-only, supplied-address, synthetic-media, target-decline, tax-screening, terms-hold, testimonial, thread-link, tier-gate, tragedy-skip, trial-cost, uniform-ask, unsure-view, use-when, venue-rest, verification, viewer-limit, visible-only, visit-capture, voice-consent, voice-gate, vote-ask, watched-event, window-close, window-expiry, words-check

Each code with its fix, its wait and the call that clears it: Refusals.

Compiled, not written: edit the records it reads (refusals), then regenerate. Every step runs from a sentence or a line of code. In your words: the CRM words you know, and where each lives here.