Skip to main content

Company & Seller Mapping

Every survey response DQC receives is a transaction between two companies:

  • the company that hosts the survey (usually you), and
  • the seller — the supplier/panel that fills the survey with respondents (e.g. Cint, Dynata, PureSpectrum).

DQC needs them for every respondent. This page has two parts: your Company (one static value) and the Seller (three ways to identify it).

Finding company records

DQC identifies companies by a canonical name/code. Use the Company Names and Codes search tool to look up the exact records. If a name you send doesn't match, DQC won't drop it silently — it's flagged so we can follow up and map it correctly.

Escape special characters in names

The names you type here sit inside a Python string in an <exec> block, which Decipher parses as XML. A literal &, <, or > in a company or seller name will break the survey. When you hand-type a name that contains one, replace it with its XML entity:

CharacterType this instead
&&amp;
<&lt;
>&gt;

For example, Smith & Jones becomes:

addDQCField("buyerName", lambda: "Smith &amp; Jones")

The interactive builder in the Decipher XML Generator escapes these for you automatically — this only matters when you edit the XML by hand.


Company (the survey host)

This is your company — the one hosting the survey. It's almost always the same, so you set it once as a static value in buyerName:

Company (static)
addDQCField("buyerName", lambda: "Your company name")   # the company hosting the survey

That's the only option here — the host company doesn't change from respondent to respondent. Because it's always your company, you can reuse the same buyerName across all of your surveys.


Seller (the supplier)

The seller is the company that supplied the respondent — the panel/supplier the person came through. This can change per respondent, so there are three ways to identify it. Pick whichever fits how you work.

A seller is required

Every response must identify its seller. Every send already carries vlistSellerName (the sample source's title), so Option 1 needs nothing extra — Options 2 and 3 add an explicit seller on top, and that value takes precedence on DQC's side.

When respondents arrive from several suppliers, each one enters through a sample source you define in your survey's <samplesources> block. Decipher exposes which source a respondent used via the list value in the entry URL (?list=2).

Name each source after its supplier and you're done — there is no mapping to hand-maintain in the script. send_results_dqc() resolves the title of the source the respondent came through and sends it as vlistSellerName, so a respondent entering with ?list=1 is attributed to that supplier:

Already in send_results_dqc() — nothing to add
addDQCField("vlistSellerName",  lambda: dqcVListSellerName())

Build your sources below — add one row per supplier, then copy the block into your survey. This is the same editor the Decipher XML Generator uses.

One row per sample source in your survey (each samplesource list="N") — include every source, even 0. The title becomes the seller DQC records.
<samplesources default="0">
<samplesource list="0">
<title></title>
<invalid>You are missing information in the URL. Please verify the URL with the original invite.</invalid>
<completed>It seems you have already completed this survey.</completed>
<exit cond="terminated">Thank you for taking our survey.</exit>
<exit cond="qualified">Thank you for taking our survey. Your efforts are greatly appreciated!</exit>
<exit cond="overquota">Thank you for taking our survey.</exit>
</samplesource>
</samplesources>
Title every source — including the default (usually 0)

Every <samplesource list="N"> needs a title, and it's easy to forget the default source — the one Decipher uses when a respondent arrives with no list in the URL, usually 0. A source with an empty title has no supplier name to resolve, so the entry check stops the survey — every participant gets an error page instead of the first question, not only the ones from that source. See what that looks like, and test each of your source links once before going live.

Option 2 — Static seller name

If you only ever work with one supplier, hard-code it — type the name below and copy the line into send_results_dqc():

The supplier every respondent in this survey comes from. Leave it empty to copy the line with a TODO placeholder.
addDQCField("sellerName",       lambda: "")   # TODO: add your sellerName
Copying a survey? Update it

A static seller only fits when every respondent in this survey comes from one supplier. If you copy this script into a survey that uses a different supplier, remember to change sellerName — a leftover value misattributes the seller.

Option 3 — Supplier index (your own IDs)

Contact the DQC team before using this option

DQC can only turn an index into a supplier if we already know what your indexes mean — on its own, a value like 2 tells us nothing. So this option starts with a conversation: contact the DQC team and send us your list of indexes and the supplier behind each one (the table below). Until we have that list, the responses arrive without a supplier we can identify.

It also only works if your indexes mean the same thing in every survey you run, so the same index always points to the same supplier. Let us know whenever you add a new one.

If you already track your suppliers in your own system — each with a stable id/index — send that identifier instead of a name. Because the index is stable, the same value always refers to the same supplier, so DQC recognizes it consistently across responses:

Seller (supplier index)
addDQCField("supplierIndex",   lambda: yourVariableInDecipher)   # the variable holding this respondent's supplier index
addDQCField("isSupplierIndex", lambda: "true") # tells DQC to resolve an index, not a name
addDQCField("sellerName", lambda: "Your supplier name") # optional — send it too if you have it

Replace yourVariableInDecipher with whatever carries the index in your survey — a sample source <var>, an entry in extraVariables, or gv.request.variables.get("yourParam", ""). Send isSupplierIndex as "true" alongside it so DQC knows to look the value up in your mapping.

Use this when your platform assigns every supplier a unique id/index. supplierIndex is required for this option; sellerName is optional — DQC already knows the name from the mapping you share, so the index alone is enough.

How the index resolves to a supplier

The lookup lives on DQC's side, not in your survey. You send DQC a one-time table of the ids/indexes your system uses and the supplier each one refers to:

Your supplierIndexSupplier
1Company A
2Company B
3Company C

Once we have that table, your survey only needs to send the index: a respondent whose yourVariableInDecipher resolves to 2 is attributed to Company B automatically, with no company name in the payload. That makes this a good approach when you'd rather not send company names directly.


✅ Summary

  • Every response is a Company (host) → Seller (supplier) transaction; DQC needs both.
  • Company — one static value, buyerName (the company hosting the survey).
  • Seller (required) — three options: by sample source (each <samplesource> title becomes the seller, nothing to script), a static sellerName, or a supplierIndex (your own stable id, with sellerName optional alongside it).
  • Title every sample source, including 0 — an untitled source has no seller to send.
  • Look up exact company records with the Company Names and Codes tool.