Skip to main content
save_advertiser_instructions records what your Seller Account wants applied to one specific buying operator working for one specific brand: free-form notes, an optional country scope and an optional discount. It is a Seller Account tool. A Buyer Account uses save_advertiser and its privateNotes field instead; see Private advertiser notes.
In a Seller Account, advertiser means a brand domain and operator domain pair that you wrote instructions for. It is not a registry-verified identity, a buyer’s own Advertiser, or an ad-server advertiser. Every domain you save carries verified: false on the way back.

What you can change

One instruction row is identified by its exact pair, operator.domain plus brand.domain. You can write three things on it: The pair itself is fixed once the row exists. To target a different operator or brand, save a new row.
This tool writes only the exact-pair row. Rows that name only a brand, only an operator, or neither are broader selling policy, and they belong to the playbook and its house-discount rules. See Listing, Playbook and Business Rules. Reading a row like that through get returns NON_EXACT_ADVERTISER and names save_playbook as the next step.

Create an instruction

Send both domains and a non-null instructions.notes or discountPercent. A create without either, including one that carries only a country scope, is refused with VALIDATION_FAILED and lists the missing fields.
The result reports action: "created" with the saved projection as object. If the write lands but the read-back is unavailable, the result reports action: "created" with warning: "created_but_readback_unavailable", the row id when known, and the pair. Read the row with get before you save again.

Change an instruction

Address the row by id, or by sending the same two domains again. Send only the fields you want to change. Anything you omit keeps its stored value.
  • A change that matches what is already stored returns action: "unchanged" with the current projection and writes nothing.
  • A change returns action: "updated". As with a create, a successful write whose read-back is unavailable returns updated_but_readback_unavailable.
  • If you send an id and also domains that do not match that row, the call is refused with PAIR_MISMATCH, naming the requested and the stored pair. Omit id to create the pair you named, or correct the domains.
  • If two stored rows match the same pair, the call is refused with AMBIGUOUS_MATCH and the matching ids. Send the id of the one you mean.
  • An id that does not exist returns NOT_FOUND. Omit id and send both domains to create the row instead.
V3 has no tool to delete an instruction row. To stop a row applying, clear its fields with null.

Read an instruction

List the rows with search, then read one with get:
query matches the operator domain, the brand domain and the notes. Search results omit the discount, routing, access and trust projections on purpose. get adds them, each with a provenance sentence that says where the value comes from: You cannot change the effective discount, routing, sponsored access or account trust with this tool. Author discounts as house-discount rules in the playbook, and open the inventory source or the relationship Page for the others.

Limits

  • The tool needs a Seller Account. A Buyer Account is refused with a wrong-account error.
  • Sending the same state again returns unchanged rather than writing twice.
  • The rows you save are the instruction rows your storefront reads when it composes products for a matching buyer. Keep notes to selling guidance. They are not a place for credentials.