Configuring WeHelp as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the WeHelp option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
You’ll need the API credentials of your WeHelp account, found under Settings > Integrations > API. The user that owns the credentials needs permission to read NPS reports. The following configurations are available:- Client ID: The Client ID of your WeHelp API integration.
- Client Secret: The Client Secret issued alongside the Client ID.
- Start Date: The earliest date from which reports will be collected. Defaults to 12 months before the first sync.
-
Period Grain: (Default:
month) The length of the period each report row covers. WeHelp reports figures for a requested date range rather than per response, so this setting defines the grain of every report table. Choosemonthfor one row per month, which suits most accounts, ordayfor one row per day, which gives finer trends at the cost of roughly 30 times more requests. -
Survey Audiences: (Default: both) Which surveys to collect.
CUSTOMERcovers customer NPS andCOLLABORATORcovers employee eNPS. Both are collected by default and are told apart by thedestinationcolumn in every report table. Select only one to halve the number of requests. -
Custom Fields to Break Down By: The custom field IDs used by the
nps_data_by_custom_fieldtable. Leave it empty to break the NPS down by every custom field in the account. Each field adds one request per period, so narrow this list if the sync gets slow. You can look the IDs up in thecustom_fieldstable. - Lookback Periods: (Default: 2) How many already-collected periods to read again on every sync. A survey sent in one period is often answered in the next, which changes the earlier period’s score, so recent periods are refreshed rather than left frozen. Raise it if answers frequently arrive late.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
- Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
- Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
- Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.How WeHelp data is organized
The WeHelp API reports aggregated figures for a requested date range. It does not expose individual survey responses, so every report table contains totals for a period rather than one row per respondent. Each report row is stamped with the window it covers:period_startandperiod_end— the first and last day of the period.period_startis the incremental replication key.period_grain—monthorday, matching the Period Grain setting.destination—CUSTOMERfor customer NPS orCOLLABORATORfor employee eNPS.
Reports grouped by unit identify each group by the unit name, not by its ID. In
nps_data_by_company_unit, join to the company_units table on name to recover the unit ID. The nps_sent, nps_conversion, and nps_answered tables do carry company_unit_id directly.Streams and Fields
Available streams
The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.Fields by stream
Below you’ll find all available data streams from WeHelp and their corresponding fields:Company Units
Company Units
The organizational units of the account. Units are the dimension every report is broken down by.Key Fields:
id- Unique identifier of the unitname- Full display name of the unit, used to identify groups in reportsnickname- Short name of the unitcode- Internal code the company assigns to the unitparent_id- Identifier of the parent unit, or null for a top-level unitcountry_id- WeHelp identifier of the unit’s countrystate_id- WeHelp identifier of the unit’s state or province
Custom Fields
Custom Fields
The account’s custom person fields, such as plan, segment, or trainer. Use these IDs in the Custom Fields to Break Down By setting.Key Fields:
id- Unique identifier of the custom fieldname- Display name of the custom field as configured in WeHelp
NPS by Company Unit
NPS by Company Unit
NPS figures per unit and period: the score and its zone, how the answers were distributed, which channels they arrived through, and how many mentioned a problem or left a comment.Identification:
company_unit_name- Name of the unit the figures describedestination-CUSTOMERfor NPS orCOLLABORATORfor eNPSperiod_start- First day of the period, and the incremental replication keyperiod_end- Last day of the periodperiod_grain- Length of the period:monthorday
nps_value- NPS score, from -100 to 100nps_status- Zone assigned to the score: EXCELLENCE, GOOD, IMPROVEMENT, CRISIS, or LEARNINGnps_total_responses- Number of responses counted in the scorenps_total_promoters- Responses scoring 9 or 10nps_total_passives- Responses scoring 7 or 8nps_total_detractors- Responses scoring 0 to 6nps_total_percent_promoters- Percentage of responses that are promotersnps_total_percent_passives- Percentage of responses that are passivesnps_total_percent_detractors- Percentage of responses that are detractors
dispersion_total- Total responses included in the distributiondispersion_average- Average score givendispersion_0_totalthroughdispersion_10_total- Number of responses per scoredispersion_0_percentthroughdispersion_10_percent- Percentage of responses per score
answered_email- Responses submitted through emailanswered_sms- Responses submitted through SMSanswered_site- Responses submitted through the websiteanswered_link- Responses submitted through a direct linkanswered_direct- Responses entered directly, in person or manuallyanswered_whatsapp- Responses submitted through WhatsAppanswered_external- Responses submitted through an external send
number_with_observation- Responses that included a written commentnumber_without_observation- Responses submitted without a commentsrproblems_number_has_problem- Responses that reported a problemsrproblems_number_hasnt_problem- Responses that reported no problemsrproblems_number- Responses that answered the problem form at allsrproblems_number_solved_problem- Reported problems marked as solvedsrproblems_number_not_solved_problem- Reported problems still unsolvednumber_with_touchpoints- Responses that recorded at least one touchpointnumber_with_extra_forms- Responses that also filled in an extra form
nps_problem_value,nps_problem_status,nps_problem_total_responses,nps_problem_total_promoters,nps_problem_total_passives,nps_problem_total_detractors,nps_problem_total_percent_promoters,nps_problem_total_percent_passives,nps_problem_total_percent_detractors- The same score breakdown, restricted to responses that reported a problem
NPS by Custom Field
NPS by Custom Field
The same NPS figures as
nps_data_by_company_unit, broken down by the value of a custom person field instead of by unit. Useful for comparing satisfaction across plans, segments, or any other attribute tracked in WeHelp.Identification:custom_field_id- Identifier of the custom field the figures are broken down bycustom_field_name- Display name of the custom field, for example “Plano”custom_field_value- Value this group covers, for example “INfinito”destination-CUSTOMERfor NPS orCOLLABORATORfor eNPSperiod_start- First day of the period, and the incremental replication keyperiod_end- Last day of the periodperiod_grain- Length of the period:monthorday
Surveys Sent
Surveys Sent
Send and delivery metrics per channel, covering both the first send and the reminder. One row per unit and channel.Identification:
Channels the account does not use still report a row with zeroes rather than being omitted.
company_unit_id- Identifier of the unit, returned as a stringcompany_unit_name- Name of the unitchannel- Delivery channel:email,sms,whats_app, orexternal_senddestination,period_start,period_end,period_grain- Audience and period the figures cover
amount- Surveys queued on this channelamount_sent- Surveys actually dispatchedamount_delivered- Sends confirmed as deliveredamount_error- Sends that failed (bounced, invalid address, refused)amount_open- Sends the recipient opened. Always zero for SMSamount_click- Sends where the recipient clicked through to the survey
amount_reminder- Reminder messages queuedamount_reminder_sent- Reminder messages dispatchedamount_reminder_delivered- Reminder messages deliveredamount_reminder_error- Reminder messages that failedamount_reminder_open- Reminder messages openedamount_reminder_click- Reminder messages clicked through
total,total_sent,total_delivered,total_error,total_open,total_click
percent_sent,percent_delivered,percent_error,percent_open,percent_click- Rates for the first sendtotal_percent- Share of all the unit’s sends that used this channeltotal_percent_sent,total_percent_delivered,total_percent_error,total_percent_open,total_percent_click- Rates across first sends and remindersamount_responses- Total responses received by the unit in the period, used as the denominator for this channel’s share
Send Conversion
Send Conversion
Send-to-response conversion per unit, with the split of answers across channels.Identification:
company_unit_id- Identifier of the unit, returned as a stringcompany_unit_name- Name of the unitdestination,period_start,period_end,period_grain- Audience and period the figures cover
conversion- Percentage of surveys sent in the period that were answeredsent_amount_responses- Surveys sent to the unit’s contacts in the periodanswered_amount_responses- Surveys answered in the period, across every channel
answered_amount_email,answered_amount_sms,answered_amount_site,answered_amount_link,answered_amount_direct,answered_amount_whatsapp,answered_amount_external_send- Answers submitted through each channelanswered_percent_email,answered_percent_sms,answered_percent_site,answered_percent_link,answered_percent_direct,answered_percent_whatsapp,answered_percent_external_send- Share of the unit’s answers that arrived through each channel
Respondent Transitions
Respondent Transitions
How repeat respondents moved between promoter, passive, and detractor, comparing each respondent’s score in the period against their previous one. This is the report behind WeHelp’s evolution view.Identification:
company_unit_id- Identifier of the unit, returned as a stringcompany_unit_name- Name of the unitdestination,period_start,period_end,period_grain- Audience and period the figures covernumber_answered- Respondents who answered in the period and had answered beforesr_id- WeHelp internal survey-round identifier for the comparison
promoter_still_promoter- Respondents who were promoters before and still arepromoter_to_passive- Promoters who became passivespromoter_to_detractor- Promoters who became detractorspassive_to_promoter- Passives who became promoterspassive_still_passive- Respondents who were passives before and still arepassive_to_detractor- Passives who became detractorsdetractor_to_promoter- Detractors who became promotersdetractor_to_passive- Detractors who became passivesdetractor_still_detractor- Respondents who were detractors before and still arepromoter_to_passive_percent,promoter_to_detractor_percent,passive_to_promoter_percent,passive_to_detractor_percent,detractor_to_promoter_percent,detractor_to_passive_percent- Share of the previous population represented by each movement
total_promoter,total_passive,total_detractor- Classes among the compared respondents in this periodold_total_promoter,old_total_passive,old_total_detractor- The same respondents at their previous answer
total_evolved- Respondents who moved to a better classtotal_remained- Respondents who stayed in the same classtotal_decayed- Respondents who moved to a worse classtotal_evolved_percent,total_remained_percent,total_decayed_percent- The same figures as shares of the compared respondents