SurveyMonkey
This page guides you through the process of setting up the SurveyMonkey source connector.
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:
- Log into your Airbyte Cloud account.
- In the left navigation bar, click Sources. In the top-right corner, click + new source.
- On the source setup page, select SurveyMonkey from the Source type dropdown and enter a name for this connector.
- lick
Authenticate your account
. - Log in and Authorize to the SurveyMonkey account
- Choose required Start date
- click
Set up source
.
For Airbyte Open Source:
- Go to local Airbyte page.
- In the left navigation bar, click Sources. In the top-right corner, click + new source.
- On the source setup page, select SurveyMonkey from the Source type dropdown and enter a name for this connector.
- Add Access Token
- Choose required Start date
- Click
Set up source
.
Supported streams and sync modes
- Surveys (Incremental)
- SurveyPages
- SurveyQuestions
- SurveyResponses (Incremental)
- SurveyCollectors
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:
- 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.
- 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
Version | Date | Pull Request | Subject |
---|---|---|---|
0.2.3 | 2023-10-13 | 31377 | Use our base image and remove Dockerfile |
0.2.2 | 2023-05-12 | 26024 | Fix dependencies conflict |
0.2.1 | 2023-04-27 | 25109 | Fix add missing params to stream SurveyResponses |
0.2.0 | 2023-04-18 | 23721 | Add SurveyCollectors and Collectors stream |
0.1.16 | 2023-04-13 | 25080 | Fix spec.json required fields and update schema for surveys and survey_responses |
0.1.15 | 2023-02-11 | 22865 | Specified date formatting in specification |
0.1.14 | 2023-01-27 | 22024 | Set AvailabilityStrategy for streams explicitly to None |
0.1.13 | 2022-11-29 | 19868 | Fix OAuth flow urls |
0.1.12 | 2022-10-13 | 17964 | Add OAuth for Eu and Ca |
0.1.11 | 2022-09-28 | 17326 | Migrate to per-stream states. |
0.1.10 | 2022-09-14 | 16706 | Fix 404 error when handling nonexistent surveys |
0.1.9 | 2022-07-28 | 13046 | Fix state for response stream, fixed backoff behaviour, added unittest |
0.1.8 | 2022-05-20 | 13046 | Fix incremental streams |
0.1.7 | 2022-02-24 | 8768 | Add custom survey IDs to limit API calls |
0.1.6 | 2022-01-14 | 9508 | Scopes change |
0.1.5 | 2021-12-28 | 8628 | Update fields in source-connectors specifications |
0.1.4 | 2021-11-11 | 7868 | Improve 'check' using '/users/me' API call |
0.1.3 | 2021-11-01 | 7433 | Remove unsused oAuth flow parameters |
0.1.2 | 2021-10-27 | 7433 | Add OAuth support |
0.1.1 | 2021-09-10 | 5983 | Fix caching for gzip compressed http response |
0.1.0 | 2021-07-06 | 4097 | Initial Release |