Skip to main content

SurveyMonkey

This page guides you through the process of setting up the SurveyMonkey source connector.

note

OAuth for Survey Monkey is officially supported only for the US. We are testing how to enable it in the EU at the moment. If you run into any issues, please reach out to us so we can promptly assist you.

Prerequisites

For Airbyte Open Source:

  • Access Token

Setup guide

Step 1: Set up SurveyMonkey

Please read this docs. Register your application here Then go to Settings and copy your access token

Step 2: Set up the source connector in Airbyte

For Airbyte Cloud:

  1. Log into your Airbyte Cloud account.
  2. In the left navigation bar, click Sources. In the top-right corner, click + new source.
  3. On the source setup page, select SurveyMonkey from the Source type dropdown and enter a name for this connector.
  4. lick Authenticate your account.
  5. Log in and Authorize to the SurveyMonkey account
  6. Choose required Start date
  7. click Set up source.

For Airbyte Open Source:

  1. Go to local Airbyte page.
  2. In the left navigation bar, click Sources. In the top-right corner, click + new source.
  3. On the source setup page, select SurveyMonkey from the Source type dropdown and enter a name for this connector.
  4. Add Access Token
  5. Choose required Start date
  6. Click Set up source.

Supported streams and sync modes

Performance considerations

The SurveyMonkey API applies heavy API quotas for default private apps, which have the following limits:

  • 125 requests per minute
  • 500 requests per day

To cover more data from this source we use caching.

Build instructions

Build your own connector image

This connector is built using our dynamic built process. The base image used to build it is defined within the metadata.yaml file under the connectorBuildOptions. The build logic is defined using Dagger here. It does not rely on a Dockerfile.

If you would like to patch our connector and build your own a simple approach would be:

  1. Create your own Dockerfile based on the latest version of the connector image.
FROM airbyte/source-surveymonkey:latest

COPY . ./airbyte/integration_code
RUN pip install ./airbyte/integration_code

# The entrypoint and default env vars are already set in the base image
# ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
# ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]

Please use this as an example. This is not optimized.

  1. Build your image:
docker build -t airbyte/source-surveymonkey:dev .
# Running the spec command against your patched connector
docker run airbyte/source-surveymonkey:dev spec

Customizing our build process

When contributing on our connector you might need to customize the build process to add a system dependency or set an env var. You can customize our build process by adding a build_customization.py module to your connector. This module should contain a pre_connector_install and post_connector_install async function that will mutate the base image and the connector container respectively. It will be imported at runtime by our build process and the functions will be called if they exist.

Here is an example of a build_customization.py module:

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
# Feel free to check the dagger documentation for more information on the Container object and its methods.
# https://dagger-io.readthedocs.io/en/sdk-python-v0.6.4/
from dagger import Container


async def pre_connector_install(base_image_container: Container) -> Container:
return await base_image_container.with_env_variable("MY_PRE_BUILD_ENV_VAR", "my_pre_build_env_var_value")

async def post_connector_install(connector_container: Container) -> Container:
return await connector_container.with_env_variable("MY_POST_BUILD_ENV_VAR", "my_post_build_env_var_value")

Changelog

VersionDatePull RequestSubject
0.2.32023-10-1331377Use our base image and remove Dockerfile
0.2.22023-05-1226024Fix dependencies conflict
0.2.12023-04-2725109Fix add missing params to stream SurveyResponses
0.2.02023-04-1823721Add SurveyCollectors and Collectors stream
0.1.162023-04-1325080Fix spec.json required fields and update schema for surveys and survey_responses
0.1.152023-02-1122865Specified date formatting in specification
0.1.142023-01-2722024Set AvailabilityStrategy for streams explicitly to None
0.1.132022-11-2919868Fix OAuth flow urls
0.1.122022-10-1317964Add OAuth for Eu and Ca
0.1.112022-09-2817326Migrate to per-stream states.
0.1.102022-09-1416706Fix 404 error when handling nonexistent surveys
0.1.92022-07-2813046Fix state for response stream, fixed backoff behaviour, added unittest
0.1.82022-05-2013046Fix incremental streams
0.1.72022-02-248768Add custom survey IDs to limit API calls
0.1.62022-01-149508Scopes change
0.1.52021-12-288628Update fields in source-connectors specifications
0.1.42021-11-117868Improve 'check' using '/users/me' API call
0.1.32021-11-017433Remove unsused oAuth flow parameters
0.1.22021-10-277433Add OAuth support
0.1.12021-09-105983Fix caching for gzip compressed http response
0.1.02021-07-064097Initial Release