Skip to content

Automation  ·  Revenue operations

How to build partner deal registration

A partner registers a deal your own rep has been working for two months, and both find out in the same week. The shape of registration that catches it immediately, the prompts that build it, and the production detail that decides whether it holds.

Built with Tray Headless

  1. System Partner portal
  2. Step Check pipeline
  3. Step Conflict rule
  4. Step Protect for a window
  5. System Salesforce
Also Gmail

Every submission is checked against existing pipeline and other registrations before it is accepted, and protection expires visibly instead of silently.

The short answer

What is partner deal registration?

Partner deal registration comes down to four things: an immediate check against existing pipeline and other registrations, a protection window with a fixed length rather than an indefinite claim, expiry that is visible and appealable instead of silent, and a conflict rule written down before the first dispute. What sinks most attempts is the conflict rule. Deciding case by case means the loudest partner wins, and every partner learns that arguing works.

What matters here

  • Check against pipeline in seconds, not days. A partner waiting a week has already had the conversation you are adjudicating.
  • Write the conflict rule down before the first dispute. Deciding case by case teaches partners that arguing works.
  • Protection is a fixed window, not a permanent claim. Registered and dormant is not the same as working the deal.
  • Expire visibly with a warning and an appeal. A silent expiry is discovered when the partner tries to claim the payout.
  • Report acceptance rate per partner. A partner whose submissions are mostly rejected does not understand the programme.

Who this is for

You run partner or channel operations. Registrations arrive by email or a form, somebody checks them against the CRM by hand, and conflicts are settled by whoever escalates hardest.

How it works in practice

The path from a partner submitting a deal to knowing whether they have it.

  1. 1

    The submission is checked against pipeline immediately

    Existing opportunities, other registrations, and whether the account is already a customer.

  2. 2

    The conflict rule decides, not a person

    Written down in advance, applied the same way every time, and visible to partners.

  3. 3

    Accepted registrations get a fixed protection window

    Ninety days, extendable once with evidence of activity.

  4. 4

    The partner is told within minutes, either way

    A rejection with a reason is workable; silence is not.

  5. 5

    Expiry warns before it happens

    With one route to extend, so protection lapsing is a decision rather than a surprise.

  6. 6

    Closed deals link back to the registration

    Which is what makes the payout calculable rather than negotiated.

What registration is made of

Four parts, though the second is what keeps partners trusting the programme.

An immediate conflict check

Against open opportunities, other registrations and existing customers, in seconds rather than days.

A written conflict rule

Decided in advance and applied identically. Case-by-case adjudication teaches partners to escalate.

A fixed protection window

Ninety days with one extension on evidence of activity. Indefinite protection is a claim on a deal nobody is working.

Visible expiry

Warned, appealable, and never silent. A partner discovering expiry at payout time is a partner you have lost.

The Tray Headless prompts

Paste these into Claude Code or Codex with the Tray Headless plugin installed. Each stage runs on its own. The systems named in them are the worked example rather than a requirement, and every prompt says so.

Once per project, run /tray-workflows:set-workspace to pick the workspace these build in. Point it at a sandbox first.

  1. 1

    Set up, then write the conflict rule first

    Before any code, because the rule is the programme.

    Headless skills build-workflow

    Use build-workflow. The systems in play are Salesforce, or whatever we
    run in those seats.
    
    Before building, write the conflict rule down. My starting position:
    
      An open opportunity created before the registration wins, and the
      registration is rejected with the reason
      An existing customer account is not registrable for the same product
      Two partner registrations: the earlier submission wins outright
      A partner registration on an account with no activity for 90 days is
      accepted even if an opportunity exists, because a dormant deal is not
      a worked deal
    
    Tell me where each of those facts lives in the CRM. The rule has to be
    computable, and if it is not, it will be adjudicated by whoever shouts,
    which is the situation we are replacing.
  2. 2

    Check in seconds, not days

    A partner waiting a week has already had the conversation.

    Headless skills build-workflow

    Use build-workflow. On submission, check immediately:
    
      Match the company to an account: domain first, then fuzzy name, then
      parent hierarchy, the same way lead-to-account matching works
      Open opportunities on that account, with created date, owner, stage
      and last activity
      Existing registrations from any partner, active or expired
      Whether the account is already a customer for this product
      Whether the named contact already exists and who owns them
    
    Return a decision within minutes. A partner who waits a week for an
    answer has already had the conversation you are adjudicating, and by then
    any decision is retrospective.
  3. 3

    Apply the rule the same way every time

    Consistency is the whole value to a partner.

    Apply the written rule mechanically and record which clause fired.
    
    Accept, reject with a reason, or send to review where the rule genuinely
    does not cover it. Keep that third category small and treat a growing one
    as a sign the rule needs another clause, not more reviewers.
    
    Tell the partner either way, within minutes, with the reason. A rejection
    a partner can understand is workable. Silence, or a rejection with no
    reason, is how a partner stops registering and starts competing with you
    quietly.
    
    Never let a rejected registration disappear. Keep it, because the same
    account will come back and the history matters.

    Recording which clause fired is what turns a dispute into a two-minute conversation, not a meeting.

  4. 4

    Protect for a window, and expire visibly

    Registered and dormant is not the same as working the deal.

    Headless skills tray-gotchas

    Use tray-gotchas, then set a fixed protection window of 90 days.
    
    Extend once, on evidence of activity: a logged meeting, a quote, or a
    contact registered. Do not extend on request alone, because indefinite
    protection is a claim on a deal nobody is working.
    
    Warn at 14 days and again at 3 days before expiry, with one route to
    request an extension.
    
    When protection expires, move it to a lapsed state that stays visible in
    history instead of deleting it. A partner discovering expiry when they
    try to claim the payout is a partner you have lost, and the record is
    what makes the conversation survivable.
  5. 5

    Link the outcome, and report by partner

    Because the payout has to be calculable instead of negotiated.

    When a registered deal closes, link the opportunity back to the
    registration so the payout is derived, not argued.
    
    Then report per partner: submissions, acceptance rate, rejection reasons,
    protection expiring in the next month, registered pipeline, closed
    registered revenue, and average days from registration to close.
    
    Acceptance rate is the number to watch. A partner whose submissions are
    mostly rejected does not understand the programme, and that is a briefing
    problem rather than a partner problem. Left alone it becomes a partner
    who stops submitting.
  6. 6

    Check it end to end, then hand the rule to partner ops

    Because the conflict rule will change and it belongs to them.

    Run the per-step schema checks and the whole-workflow audit before this
    touches production.
    
    Then open the same workflow in Tray Build so partner operations can amend
    the conflict rule, the protection window and the extension criteria in
    the visual canvas. Publish the rule to partners as well, because a rule
    they cannot read is one they will dispute.

What it connects to

Registrations arrive from outside and have to be checked against everything inside.

Salesforce

Check against open opportunities, registrations and customer accounts, then create the registration and link the closed deal back.

Reads and writes

HubSpot

Some partner programmes run on a separate CRM from the direct team, so read registrations from there too.

Reads

Gmail

Tell the partner the decision within minutes, with the reason, and warn before protection expires.

Writes

Slack

Tell the account owner when a partner registers on their account, before they hear it from the partner.

Writes

NetSuite

Confirm the invoice was collected before a payout becomes eligible, where payouts are gated on cash.

Reads

Snowflake

Land registrations and outcomes, so acceptance rate and registered revenue per partner are measurable.

Writes

Same build, other stacks

The design does not change if you run something else in one of these seats. The same prompts build it against Microsoft Dynamics 365, SAP S/4HANA, Google BigQuery, Microsoft Teams, Microsoft Outlook or Marketo.

Named systems are the ones most teams run, not the only ones that work. Each is an authentication in your Tray workspace, referenced by name, so the workflow never holds a credential. Where we have a connector page, the name links to it.

Running it in production

This adjudicates money between your team and your partners. Consistency is the product.

This runs as infrastructure, not as a script

Submissions arrive at any hour from any timezone and get a decision in minutes rather than waiting for somebody in one office to open a queue.

Every decision records the clause that fired

Which rule, against which opportunity, at what time. That turns a dispute into a two-minute conversation instead of a meeting.

Credentials live in the workspace, never in the repo

Partner-facing systems and the CRM are separate authentications in your workspace, so a partner portal compromise cannot reach the CRM.

Partner ops own the rule

The conflict rule, protection window and extension criteria open in Tray Build, and the rule is published to partners instead of kept internal.

Nothing expires silently

Two warnings and an appeal route. A partner finding out at payout time is the failure that ends a partnership.

Questions people ask

Why write the conflict rule in advance?

Because deciding case by case means the loudest partner wins, and every partner learns that escalating works. A written rule applied identically is the entire value of the programme to them.

How fast should a decision come back?

Minutes. A partner waiting a week has already had the conversation you are adjudicating, and any decision after that is retrospective and unenforceable in practice.

Why a fixed protection window?

Because indefinite protection is a claim on a deal nobody is working. Ninety days, extendable once on evidence of activity rather than on request, keeps protection tied to effort.

What happens when protection expires?

Two warnings, an appeal route, and a lapsed state that stays visible in history. A partner discovering expiry when they claim the payout is a partner you have lost.

What should be reported per partner?

Acceptance rate above all. A partner whose submissions are mostly rejected does not understand the programme, which is a briefing problem, and left alone it becomes a partner who stops submitting.

Vibe-coding app guides

Vibe-code an entire app with Helix

This moves the data between systems. It does not give anybody a screen to work in. Build that app in Claude Code, Codex or Cursor, then deploy and run it governed on Tray Helix. Same kind of guide, same kind of prompts.

How to build a partner referral tracker (opens helix.tray.ai in a new tab)

Last reviewed September 2026.