Skip to main content
Tools Reference

Customer Thermometer Tools

Written By Christopher Scaminaci

Last updated 7 days ago

Customer Thermometer Tools

ct_ · 15 tools · Free 10 · Pro 5 One-click CSAT and NPS surveying for service desks. One fixed host and ONE path — app.customerthermometer.com/api.php — with the operation chosen by a getMethod query parameter; a static sub-API key travels as Authorization: Bearer and the vendor's alternative apiKey= query form is never used, so no secret reaches a URL. No JSON anywhere: four reads answer XML documents, six answer a bare integer and two writes answer a bare string, and every tool passes the vendor body through verbatim rather than converting it. No pagination — a limit (capped at 200 StackJack-side; the vendor publishes no maximum) over a newest-first ordering plus an optional fromDate/toDate window, so deeper history is reached by moving the dates. The API has no tenant concept: one account, one key, one set of thermometers and lists, so every read is whole-account and narrowing to one client means a blastID filter or the companyName field. No documented rate limit and no documented error contract.

All connector tools · Customer Thermometer setup guide

Customer Thermometer tool groups

Responses & Comments

ToolPlanAccessSummary
ct_list_commentsFreeRead-onlyList the free-text comments people left on their survey responses — the half of the feed a human actually wants to read, because a red score with a comment is actionable and a red score alone is a…
ct_list_responsesFreeRead-onlyList survey responses with the recipient data attached — the CSAT feed itself, and the tool to start from.

[Customer Thermometer] List the free-text comments people left on their survey responses — the half of the feed a human actually wants to read, because a red score with a comment is actionable and a red score alone is a number. Returns an XML DOCUMENT verbatim, not JSON. Newest first; the vendor returns the most recent 200 when no limit is given. WHOLE-ACCOUNT, exactly like ct_list_responses: narrow with blastId or filter companyName yourself. No paging — move fromDate and toDate to reach further back.

ParamTypeRequiredDefaultDescription
blastIdstringnonullOnly comments from one blast. The practical way to scope to one client, if each client's surveys go out as their own blast.
fromDatestringnonullEarliest response date to include, as YYYY-MM-DD.
limitintegernonullHow many comments to return, newest first. The vendor's own default is 200 when this is omitted. StackJack caps it at 200 — the vendor publishes no maximum and this feed cannot be paged.
temperatureIdintegernonullOnly comments left at one temperature: 1 gold (best), 2 green, 3 yellow, 4 red (worst). Filtering to 4 is the fast way to find unhappy clients.
toDatestringnonullLatest response date to include, as YYYY-MM-DD.

[Customer Thermometer] List survey responses with the recipient data attached — the CSAT feed itself, and the tool to start from. Returns an XML DOCUMENT verbatim, not JSON: Customer Thermometer publishes no JSON format for this method, so parse the XML or read it as text. Newest first; the vendor returns the most recent 200 rows when no limit is given. WHOLE-ACCOUNT: Customer Thermometer has no concept of your individual clients, so this covers every client you survey — narrow with blastId if you organized a blast per client, or filter the companyName field in the response yourself. There is no paging of any kind, so reach further back by moving fromDate and toDate rather than asking for a bigger limit.

ParamTypeRequiredDefaultDescription
blastIdstringnonullOnly responses from one blast. This is the practical way to scope a report to one client, if each client's surveys go out as their own blast. Get blast IDs from the survey you sent, or from the response rows themselves.
fromDatestringnonullEarliest response date to include, as YYYY-MM-DD.
limitintegernonullHow many responses to return, newest first. The vendor's own default is 200 when this is omitted. StackJack caps it at 200 — the vendor publishes no maximum and this feed cannot be paged, so a larger value is quietly reduced to 200 rather than refused. A full 200 rows therefore means there may be more you did not see: move fromDate and toDate to reach further back.
temperatureIdintegernonullOnly responses at one temperature: 1 gold (best), 2 green, 3 yellow, 4 red (worst). Omit for every temperature.
toDatestringnonullLatest response date to include, as YYYY-MM-DD.

Scores & Aggregates

ToolPlanAccessSummary
ct_count_responsesFreeRead-onlyCount survey responses, optionally at one temperature.
ct_get_happiness_scoreFreeRead-onlyGet the Happiness Factor as a percentage.
ct_get_nps_scoreFreeRead-onlyGet the Net Promoter Score.
ct_get_response_rateFreeRead-onlyGet the survey response rate as a percentage.
ct_get_temperature_ratingFreeRead-onlyGet the Temperature Rating as a percentage — Customer Thermometer's weighted blend of the four icon choices, which is a different measure from the Happiness Factor rather than a restatement of it.

[Customer Thermometer] Count survey responses, optionally at one temperature. Returns a BARE INTEGER. This is the tool that gives the other scores a denominator — a happiness figure with no sample size behind it is not reportable — and counting by temperature (4 = red) is the fastest read on how many unhappy responses landed in a period. WHOLE-ACCOUNT unless you pass blastId. The vendor applies NO default limit here, so with no filter at all this counts every response the account holds.

ParamTypeRequiredDefaultDescription
blastIdstringnonullCount within one blast only. The practical way to scope a count to one client.
fromDatestringnonullEarliest response date to include, as YYYY-MM-DD.
limitintegernonullHow many of the most recent responses to count within. The vendor applies NO default here. StackJack caps it at 200.
temperatureIdintegernonullCount only responses at one temperature: 1 gold (best), 2 green, 3 yellow, 4 red (worst). Omit to count every response.
toDatestringnonullLatest response date to include, as YYYY-MM-DD.

[Customer Thermometer] Get the Happiness Factor as a percentage. Returns a BARE INTEGER — the digits and nothing else, with no sample size or period alongside, so pair it with ct_count_responses when you need to say what it was calculated from. WHOLE-ACCOUNT unless you pass blastId: Customer Thermometer has no concept of your individual clients, so an unfiltered figure mixes every client you survey and must not be reported as one client's score. The vendor applies a default limit of 100 most-recent responses when limit is omitted, which is a rolling window rather than a period — pass fromDate and toDate for a calendar month.

ParamTypeRequiredDefaultDescription
blastIdstringnonullCalculate over one blast only. The practical way to scope a score to one client, if each client's surveys go out as their own blast.
fromDatestringnonullEarliest response date to include, as YYYY-MM-DD.
limitintegernonullHow many of the most recent responses to calculate over. The vendor's own default is 100 when this is omitted. StackJack caps it at 200 — the vendor publishes no maximum.
toDatestringnonullLatest response date to include, as YYYY-MM-DD.

[Customer Thermometer] Get the Net Promoter Score. Returns a BARE INTEGER, and it MAY BE NEGATIVE — NPS runs from -100 to 100, so a leading minus sign is a real value and not an error. WHOLE-ACCOUNT unless you pass blastId. Unlike the happiness and temperature scores, the vendor applies NO default limit here: with no filter at all this is the account's lifetime NPS. The vendor also documents that limit should be combined with a blast or a date range rather than used on its own.

ParamTypeRequiredDefaultDescription
blastIdstringnonullCalculate over one blast only. The practical way to scope NPS to one client.
fromDatestringnonullEarliest response date to include, as YYYY-MM-DD.
limitintegernonullHow many of the most recent responses to calculate over. The vendor applies NO default here and documents that it should be combined with blastId or a date range. StackJack caps it at 200.
toDatestringnonullLatest response date to include, as YYYY-MM-DD.

[Customer Thermometer] Get the survey response rate as a percentage. Returns a BARE INTEGER. This covers EMAIL Thermometer blasts only — surveys embedded in an email signature are excluded from the calculation at account level, so a low figure on an account that mostly uses embedded surveys is a measurement artifact rather than disengagement. WHOLE-ACCOUNT unless you pass blastId. The vendor applies a default limit of 100 most-recent sends when limit is omitted.

ParamTypeRequiredDefaultDescription
blastIdstringnonullCalculate over one blast only. The practical way to scope the rate to one client.
fromDatestringnonullEarliest date to include, as YYYY-MM-DD.
limitintegernonullHow many of the most recent sends to calculate over. The vendor's own default is 100 when this is omitted. StackJack caps it at 200.
toDatestringnonullLatest date to include, as YYYY-MM-DD.

[Customer Thermometer] Get the Temperature Rating as a percentage — Customer Thermometer's weighted blend of the four icon choices, which is a different measure from the Happiness Factor rather than a restatement of it. Returns a BARE INTEGER. WHOLE-ACCOUNT unless you pass blastId. The vendor applies a default limit of 100 most-recent responses when limit is omitted; pass fromDate and toDate for a calendar period.

ParamTypeRequiredDefaultDescription
blastIdstringnonullCalculate over one blast only. The practical way to scope the rating to one client.
fromDatestringnonullEarliest response date to include, as YYYY-MM-DD.
limitintegernonullHow many of the most recent responses to calculate over. The vendor's own default is 100 when this is omitted. StackJack caps it at 200.
toDatestringnonullLatest response date to include, as YYYY-MM-DD.

Account Discovery

ToolPlanAccessSummary
ct_get_send_quotaFreeRead-onlyGet the number of survey sends left on the account.
ct_list_recipient_listsFreeRead-onlyList the recipient lists in the account with their names and IDs.
ct_list_thermometersFreeRead-onlyList the thermometers in the account with their names and IDs.

[Customer Thermometer] Get the number of survey sends left on the account. Returns a BARE INTEGER. Check it before a bulk send: ct_send_survey answers 0 and sends nothing once the allowance is gone, which reads as a success to anything that only checks for an error. Takes no parameters.

[Customer Thermometer] List the recipient lists in the account with their names and IDs. The second half of the plumbing: ct_send_survey and ct_add_recipient_to_list both need a list ID and this is the only place one comes from. Returns an XML DOCUMENT verbatim, not JSON. Takes no parameters and returns the whole account in one call. Worth reading before a reporting question too — because Customer Thermometer has no concept of your individual clients, a per-client list is usually how an MSP has organized them.

[Customer Thermometer] List the thermometers in the account with their names and IDs. Start here before sending anything: ct_send_survey needs a thermometer ID and this is the only place one comes from. Returns an XML DOCUMENT verbatim, not JSON — Customer Thermometer publishes no JSON format for this method. Takes no parameters and returns the whole account in one call; there is no paging and no filter.

Survey Dispatch

ToolPlanAccessSummary
ct_send_surveyProDestructiveSENDS A REAL EMAIL to a real person and spends one of the account's send credits.

[Customer Thermometer] SENDS A REAL EMAIL to a real person and spends one of the account's send credits. It cannot be recalled once sent, which is why it is marked destructive. Returns a BARE INTEGER — the blast ID the send landed in. When the account cannot send (most often the send allowance is used up) Customer Thermometer answers a bare 0 with a success status; StackJack reports that as an error instead of a result, so a value returned from this tool always means the email actually went out. Check ct_get_send_quota first when sending more than a handful. GET thermometerId from ct_list_thermometers and listId from ct_list_recipient_lists; both are required and cannot be guessed. IMPORTANT: leaving blastId empty makes Customer Thermometer create a brand-new blast for this one person — send to several people that way and the account fills with single-person blasts and every per-blast report becomes useless, with no API method to merge or delete them. Pass the blastId of an existing blast when sending to more than one recipient. The recipient is also appended to listId as a side effect.

ParamTypeRequiredDefaultDescription
blastIdstringnonullSTRONGLY RECOMMENDED when sending to more than one person: the existing blast to send within. Leave it empty and Customer Thermometer creates a new single-person blast for this send, which makes per-blast reporting meaningless and cannot be undone.
companyNamestringnonullRecipient company name. Worth setting on every send: it is the only field that ties a response back to one of your client companies, because Customer Thermometer has no concept of your clients otherwise.
custom1stringnonullCustom field 1, stored on the response. MSPs commonly put the ticket number here.
custom2stringnonullCustom field 2, stored on the response. Commonly the technician name.
custom3stringnonullCustom field 3, stored on the response.
emailAddressstringyesREQUIRED. The email address to survey. This is a real person and they will receive a real email.
firstNamestringnonullRecipient first name, used in the survey email and stored on the response.
lastNamestringnonullRecipient last name, used in the survey email and stored on the response.
listIdstringyesREQUIRED. The recipient list to send against, from ct_list_recipient_lists. The recipient is appended to this list as a side effect of the send.
thermometerIdstringyesREQUIRED. The thermometer to send, from ct_list_thermometers. This decides which survey the recipient sees.

Response & Recipient Management

ToolPlanAccessSummary
ct_add_recipient_to_listProWriteAdd one recipient to an existing recipient list.
ct_delete_responseProDestructiveDelete one survey response from reporting.
ct_log_responseProDestructiveWrite a survey response directly into reporting, as if a real person had clicked.
ct_unsubscribe_recipientProDestructiveAdd an email address to the account's unsubscribe list, which stops EVERY future survey to that person across every thermometer and every list.

[Customer Thermometer] Add one recipient to an existing recipient list. Additive and safe: nothing is sent, nothing is deleted, and no notification fires — which is why this is the one write here that is not marked destructive. Returns the email address as a BARE STRING. Get listId from ct_list_recipient_lists. Setting companyName is worth doing on every add, because it is the only field that ties later responses back to one of your client companies.

ParamTypeRequiredDefaultDescription
companyNamestringnonullRecipient company name. The only field that ties later responses back to one of your client companies.
custom1stringnonullCustom field 1, commonly the ticket number.
custom10stringnonullCustom field 10.
custom11stringnonullCustom field 11.
custom12stringnonullCustom field 12.
custom2stringnonullCustom field 2, commonly the technician name.
custom3stringnonullCustom field 3.
custom4stringnonullCustom field 4.
custom5stringnonullCustom field 5.
custom6stringnonullCustom field 6.
custom7stringnonullCustom field 7.
custom8stringnonullCustom field 8.
custom9stringnonullCustom field 9.
emailAddressstringyesREQUIRED. The email address to add.
firstNamestringnonullRecipient first name.
lastNamestringnonullRecipient last name.
listIdstringyesREQUIRED. The recipient list to add to, from ct_list_recipient_lists.

[Customer Thermometer] Delete one survey response from reporting. Destructive: the response leaves every score and every report immediately, and the row goes to a bin Customer Thermometer empties automatically after 30 days — there is no API method to restore it, so the only recovery is inside the product and only within that window. Returns a BARE INTEGER. Get the response ID from ct_list_responses.

ParamTypeRequiredDefaultDescription
responseIdstringyesREQUIRED. The response to delete, from ct_list_responses. There is no undo through the API.

[Customer Thermometer] Write a survey response directly into reporting, as if a real person had clicked. Destructive: the row is indistinguishable from a genuine response afterwards, it changes every score the account reports, and it CAN FIRE the account's email and webhook notifications on the way in. This exists to migrate historical responses in from another survey product — it is not a way to record satisfaction you were told about verbally, and using it that way corrupts the client's CSAT numbers. Returns a BARE INTEGER. Get thermometerId from ct_list_thermometers.

ParamTypeRequiredDefaultDescription
blastIdstringnonullThe blast to record the response under. Set it when migrating history so the response lands in the right reporting period and grouping.
commentstringnonullThe free-text comment the respondent left, if any. This is what ct_list_comments returns.
companyNamestringnonullRespondent company name. The only field that ties a response back to one of your client companies.
custom1stringnonullCustom field 1, commonly the ticket number.
custom10stringnonullCustom field 10.
custom11stringnonullCustom field 11.
custom12stringnonullCustom field 12.
custom2stringnonullCustom field 2, commonly the technician name.
custom3stringnonullCustom field 3.
custom4stringnonullCustom field 4.
custom5stringnonullCustom field 5.
custom6stringnonullCustom field 6.
custom7stringnonullCustom field 7.
custom8stringnonullCustom field 8.
custom9stringnonullCustom field 9.
emailNotificationFlagbooleannonullWhether to fire the account's email notification for this response. Defaults to the account setting. Set it to false when migrating history in bulk, or every migrated row emails someone.
firstNamestringnonullRespondent first name.
isoCountrystringnonullTwo-letter ISO country code for the respondent.
lastNamestringnonullRespondent last name.
npsRatingintegernonullNet Promoter rating from 0 to 10, if the migrated response carried one.
recipientstringyesREQUIRED. The email address of the person the response is recorded against.
responseDatestringnonullThe date to record the response on, as YYYY-MM-DD. Set it when migrating history, or the response is dated today and lands in the wrong reporting period.
temperatureIdintegeryesREQUIRED. The temperature clicked: 1 gold (best), 2 green, 3 yellow, 4 red (worst).
thermometerIdstringyesREQUIRED. The thermometer the response belongs to, from ct_list_thermometers.
userAgentstringnonullUser agent string to record against the response.
webhookNotificationFlagbooleannonullWhether to fire the account's webhook notification for this response. Defaults to the account setting. Set it to false when migrating history in bulk, or every migrated row triggers your automation.

[Customer Thermometer] Add an email address to the account's unsubscribe list, which stops EVERY future survey to that person across every thermometer and every list. Destructive and effectively PERMANENT: Customer Thermometer documents no re-subscribe method, so once an address is suppressed there is no way to reverse it through this API. Do not use it to tidy a list — removing a client contact by mistake silently ends their CSAT history. Returns a BARE STRING. The optional notify flag emails the person to tell them they were unsubscribed.

ParamTypeRequiredDefaultDescription
emailAddressstringyesREQUIRED. The email address to suppress. Every future survey to this address stops, and there is no documented way to undo it through the API.
notifybooleannonullWhether to email the person telling them they have been unsubscribed. Defaults to the account setting. Setting it to true reaches a real human, so leave it unset unless you mean to.