# SailPoint Givebutter Connector Documentation > Givebutter Connector Documentation # Documentation # Connecting SailPoint and Givebutter To connect SailPoint to the source, perform the following tasks: ## Adding and Configuring the Source in SailPoint To connect to SailPoint, perform the following steps. Once the connection is made, you can configure it to meet your company's needs. 1. Go to **Admin \> Connections \> Sources**. 2. Select **Create New**. 3. Search for a source type and select **Actions**. 4. In the **Actions** dropdown, select the setup method: - **Express Setup** - Quickly create a read-only connection to your target system by providing minimal configurations and authentication. On completion, aggregation is automatically started. > **Note** > > Express Setup supports Credential Providers. For information on supported credential providers and configuration, refer to [Credential Providers](). For more information, contact your SailPoint Customer Service Manager. - **Standard Setup** - Provide detailed basic configuration to create the source. Once the source is created, continue with source setup. ### Express Setup 1. Review the directions and select **Start Express Setup**. 2. Review the pre-populated source name, source owner, and description. To update, select **Edit**. > **Note** > > Source name must be unique. 3. (Optional) If enabled for your organization, select the **Use a Credential Provider** checkbox to manage the source's authentication using a credential provider. > **Note** > > To add a Credential Provider in SailPoint, go to **Admin \> Connections \> Credential Providers**. For more information about credential providers, refer to [Credential Providers](). 4. Configure the authentication to allow SailPoint to connect to the source. For more information, refer to the **Connection Settings** page. 5. Select **Finish**. After a successful test connection, the system creates your source and prompts you to run an aggregation. - If you want to aggregate now, select **Aggregate**. - To see the latest account aggregation history, go to **Account Management \> Account Aggregation**. - To see the list of aggregated source accounts, go to **Account Management \> Accounts**. - If you want to aggregate later, select **Exit**. This returns you to the **Sources** page. Your new source is listed, but contains no accounts or aggregation history yet. ### Standard Setup Configure more detailed settings relative to Express Setup. 1. In the **Source Name** field, enter a unique and descriptive name for your source. Source names cannot exceed 128 characters. 2. In the **Description** field, provide additional details about the source to help distinguish it from similar sources. This field allows a maximum of 2,000 characters. 3. In the **Source Owner** field, begin typing the name of an owner. Matches appear after you type two or more letters. For more information, refer to [Assigning a Source Owner](). 4. (Optional) Select a governance group to grant its members [source]() or [role]() sub-admin level oversight of the source and its access. For more information, refer to [Creating and Managing Governance Groups](). 5. If this source represents a primary system containing your organization's personnel records, select the **Authoritative Source** checkbox. For more information, refer to [Creating Identity Profiles](). 6. Select **Continue**. The source is created, and you are navigated to the **Source Setup \> Base Configuration** page. Here, continue to configure your connected source. ## Base Configuration Provide the base configuration parameters. Information you entered in the Create New Source dialog is automatically entered into the fields in the Base Configuration page. You can edit this information if necessary. 1. Enter a descriptive **Source Name** for the connection. 2. Enter the **Source Description** that provides details necessary to distinguish it from similar connection sources. 3. In **Source Owner**, begin typing the name of the source owner. 4. (Optional) Select the appropriate **Governance Group for Source Management** from the dropdown list. For more information about governance groups, refer to [Associating Governance Groups with a Source](). 5. Select **Create Manual Work Items** to enable the source to support additional source management features such as creating accounts and access profile management. > **Important** > > Once you enable this feature, it can't be disabled. For more information on manual work items, refer to [Work Items](). For more information on SailPoint features, refer to [SailPoint Identity Services](). 6. Select **Save**. ## Connection Settings Configure a secured, direct connection to the source. 1. Enter the Givebutter API base URL as **Base URL**. For example, `https://api.givebutter.com/v1`. 2. Enter the **API Key**. 3. Select **Save**. ## Review and Test Perform a test to confirm the connection to SailPoint. 1. Go to **Review and Test**. 2. Confirm that the entries in each field are correct. If you note any mistakes, return to the section and make corrections. 3. Select **Test Connection**. ## SailPoint Application Onboarding SailPoint application onboarding enables you to easily onboard new applications and create sources following the successful onboarding of a discovery source. To use this feature, continue to **Discovered Applications** in the SailPoint user interface. For more information, refer to [Application Onboarding]() in the SailPoint SaaS documentation. # Integrating SailPoint with Givebutter Givebutter is a cloud-based fundraising and donor/constituent management platform used by nonprofits and community organizations to manage contacts (donors, volunteers, sponsors), campaigns, transactions, and recurring giving. It lets organizations track contact relationships - including companies a contact is associated with, their donation history, and communication preferences - and connects to other tools via its REST API using API key (Bearer token) authentication. This document provides instructions to configure a new direct connection to a Givebutter source. For a reference to the terminology specific to SailPoint products, refer to [Source and Connector Definitions](). > [!NOTE] > > To view the latest features, enhancements, and fixes for all SaaS connectors, refer to the [SaaS Release Notes]() page. ## Supported Features The Givebutter connector supports the following: ### Account Management - Aggregate Contacts > [!NOTE] > > A contact's company affiliations are captured as part of the Account aggregation itself (embedded within each contact record as the `associated_companies` array), so a separate Entitlement aggregation is not required. `associated_companies_name` is used as the Entitlement value. > [!IMPORTANT] > > Quick Compliance connectors have the following manual aggregation limits within a 24-hour period: > > - **Organization Admins**: Limited to 3 manual account or entitlement aggregations per day per source. This limit is cumulative across all admins in the organization. > - **Regular Users**: Limited to 1 manual account or entitlement aggregation per day per source. > > These limits ensure that individual compliance statuses are kept up to date while maintaining continuous compliance monitoring. If you need to run additional aggregations beyond these limits, contact SailPoint Support. ## Prerequisites Ensure the following prerequisites are met before proceeding with the configuration: 1. Sign in to [Givebutter](). 2. Go to **Settings \> Developers \> API \> New API key**. 3. Copy and securely store the following details, which are required during connector configuration: - **API Key** > [!NOTE] > > The Givebutter API uses Bearer token authentication: `Authorization: Bearer {{ your_api_key }}`. No additional custom headers are required for the Contacts endpoint. All API requests must be made over HTTPS; unencrypted HTTP calls are not supported and will fail. Tokens should be stored securely and treated like a password. ## Required Permissions Givebutter uses role-based access. Available roles: - **Administrator** - full access to all features, settings, billing, team management - **Finance** - payouts, refunds, transactions, financial reports - **Campaign Editor** - create/manage campaigns, events, fundraising pages - **CRM Manager** - manage contacts, segments, communications - **Mobile Access** - Full (contacts, transactions, invites) or Limited (check-in/events only) For detailed information on Givebutter API authentication, refer to the [Givebutter API documentation](). > [!NOTE] > > The linked document is not maintained by SailPoint and is subject to change without notice. # Schema Reference The application schema is used to configure the objects returned from a connector. > [!NOTE] > > - The **Account Schema** tab is used to define the attributes for each object type in the application being configured. The schema attributes can be defined as **Entitlement** or **Multi-Valued**. Refer to [Managing Source Account Schemas]() for more information. > - The schema attributes that are not present by [default](<#default-account-schema>) must be defined as strings if not specified. The Givebutter connector uses the following default correlation and object configurations. ## Default Account Schema Each source supports a variety of details, or attributes, about each user who has an account, such as their name, email address, manager name, and location. The set of account attributes each source stores and how they're organized is known as the account's *schema*. To best represent your data, you can configure sources to use an account schema matching the one you use in the external connector. Refer to [Managing Source Account Schemas]() for more information. ### Default Account ID SailPoint requires that certain attributes remain in your configuration. These attributes are referred to as *account IDs*. > [!CAUTION] > > Changing the attribute marked as the account ID after aggregating accounts can result in duplicate accounts being created. To avoid this, either reset the accounts on this source before editing the account ID attribute or edit the account ID attribute before aggregating accounts. > > To resolve issues caused by changing account IDs, reconfigure them to their default values. The following table lists the default account IDs for this connector: | Account ID | Schema Object Type | | --- | --- | | id | Account (Contact) | ### Default Account Attributes The Givebutter connector supports the following default account schema attributes and customer configurable attributes. The attributes must be defined as strings if not specified. | Attribute Name | Description | | --- | --- | | id | Unique identifier for the contact | | external\_id | External identifier for the contact | | contact\_since | Date the contact was first added | | type | Type of the contact record | | prefix | Salutation of the contact | | first\_name | First name of the contact | | preferred\_name | Preferred name of the contact | | middle\_name | Middle name of the contact | | last\_name | Last name of the contact | | suffix | Suffix of the contact's name | | gender | Gender of the contact | | pronouns | Pronouns of the contact | | dob | Date of birth of the contact | | company | Company field of the contact | | employer | Employer of the contact | | company\_name | Company name of the contact | | title | Job title of the contact | | website\_url | Website URL of the contact | | twitter\_url | Twitter URL of the contact | | linkedin\_url | LinkedIn URL of the contact | | facebook\_url | Facebook URL of the contact | | tiktok\_url | TikTok URL of the contact | | instagram\_url | Instagram URL of the contact | | emails\_type | Type of each email address on the contact - one of home, work, other | | emails\_value | Value of each email address on the contact | | phones\_type | Type of each phone number on the contact - one of mobile, home, work, other | | phones\_value | Value of each phone number on the contact | | primary\_email | Primary email address of the contact | | primary\_phone | Primary phone number of the contact | | note | Note associated with the contact | | addresses\_address\_1 | Address line 1 for each address on the contact | | addresses\_address\_2 | Address line 2 for each address on the contact | | addresses\_city | City for each address on the contact | | addresses\_state | State for each address on the contact | | addresses\_zipcode | Zipcode for each address on the contact | | addresses\_country | Country for each address on the contact | | addresses\_type | Type for each address on the contact - one of home, work, other | | addresses\_is\_primary | Stores boolean true/false, whether each address is the primary address | | addresses\_created\_at | Timestamp when each address was created | | addresses\_updated\_at | Timestamp when each address was last updated | | primary\_address\_address\_1 | Address line 1 of the contact's primary address | | primary\_address\_address\_2 | Address line 2 of the contact's primary address | | primary\_address\_city | City of the contact's primary address | | primary\_address\_state | State of the contact's primary address | | primary\_address\_zipcode | Zipcode of the contact's primary address | | primary\_address\_country | Country of the contact's primary address | | primary\_address\_type | Type of the contact's primary address | | primary\_address\_is\_primary | Stores boolean true/false, whether the primary address record is marked primary | | primary\_address\_created\_at | Timestamp when the primary address was created | | primary\_address\_updated\_at | Timestamp when the primary address was last updated | | last\_donation\_amount | Amount of the contact's last donation | | stats\_total\_contributions | Total contributions made by the contact | | stats\_recurring\_contributions | Recurring contributions made by the contact | | tags | Tags applied to the contact | | custom\_fields | Custom fields defined on the contact | | external\_ids\_id | ID of each external identifier record on the contact | | external\_ids\_label | Label of each external identifier record on the contact | | external\_ids\_external\_id | Value of each external identifier record on the contact | | external\_ids\_created\_at | Timestamp when each external identifier record was created | | external\_ids\_updated\_at | Timestamp when each external identifier record was last updated | | is\_email\_subscribed | Stores boolean true/false, whether the contact is subscribed to email communications | | is\_phone\_subscribed | Stores boolean true/false, whether the contact is subscribed to phone communications | | is\_address\_subscribed | Stores boolean true/false, whether the contact is subscribed to postal communications | | email\_opt\_in | Stores boolean true/false, whether the contact has opted in to email | | sms\_opt\_in | Stores boolean true/false, whether the contact has opted in to SMS | | address\_unsubscribed\_at | Timestamp when the contact unsubscribed from postal communications | | archived\_at | Timestamp when the contact was archived | | created\_at | Timestamp when the contact was created | | updated\_at | Timestamp when the contact was last updated | | salutation\_name | Salutation name of the contact | | point\_of\_contact\_id | Id of the point of contact linked to this record | | point\_of\_contact\_type | Type of the point of contact record | | point\_of\_contact\_prefix | Prefix of the point of contact | | point\_of\_contact\_first\_name | First name of the point of contact | | point\_of\_contact\_middle\_name | Middle name of the point of contact | | point\_of\_contact\_last\_name | Last name of the point of contact | | point\_of\_contact\_suffix | Suffix of the point of contact | | point\_of\_contact\_gender | Gender of the point of contact | | point\_of\_contact\_pronouns | Pronouns of the point of contact | | point\_of\_contact\_dob | Date of birth of the point of contact | | point\_of\_contact\_employer | Employer of the point of contact | | point\_of\_contact\_title | Job title of the point of contact | | point\_of\_contact\_twitter\_url | Twitter URL of the point of contact | | point\_of\_contact\_linkedin\_url | LinkedIn URL of the point of contact | | point\_of\_contact\_facebook\_url | Facebook URL of the point of contact | | point\_of\_contact\_tiktok\_url | TikTok URL of the point of contact | | point\_of\_contact\_instagram\_url | Instagram URL of the point of contact | | point\_of\_contact\_website\_url | Website URL of the point of contact | | point\_of\_contact\_primary\_email | Primary email of the point of contact | | point\_of\_contact\_primary\_phone | Primary phone of the point of contact | | point\_of\_contact\_is\_email\_subscribed | Stores boolean true/false, whether the point of contact is subscribed to email communications | | point\_of\_contact\_is\_phone\_subscribed | Stores boolean true/false, whether the point of contact is subscribed to phone communications | | point\_of\_contact\_is\_address\_subscribed | Stores boolean true/false, whether the point of contact is subscribed to postal communications | | point\_of\_contact\_address\_unsubscribed\_at | Timestamp when the point of contact unsubscribed from postal communications | | point\_of\_contact\_archived\_at | Timestamp when the point of contact was archived | | point\_of\_contact\_created\_at | Timestamp when the point of contact was created | | point\_of\_contact\_updated\_at | Timestamp when the point of contact was last updated | | point\_of\_contact\_first\_time\_supporter\_at | Timestamp when the point of contact became a first-time supporter | | associated\_companies\_id | Id of the company associated to the contact | | associated\_companies\_name | Name of the company associated to the contact, used as the Entitlement value | | associated\_companies\_name\_display | Display name of the company associated to the contact | | associated\_companies\_type | Type of each company associated to the contact | | associated\_companies\_title | Title of the contact at each associated company | | associated\_companies\_twitter\_url | Twitter URL of each associated company | | associated\_companies\_linkedin\_url | LinkedIn URL of each associated company | | associated\_companies\_facebook\_url | Facebook URL of each associated company | | associated\_companies\_tiktok\_url | TikTok URL of each associated company | | associated\_companies\_instagram\_url | Instagram URL of each associated company | | associated\_companies\_website\_url | Website URL of each associated company | | associated\_companies\_image\_url | Image URL of each associated company | | associated\_companies\_primary\_email | Primary email of each associated company | | associated\_companies\_primary\_phone | Primary phone of each associated company | | associated\_companies\_is\_email\_subscribed | Stores boolean true/false, whether each associated company is subscribed to email communications | | associated\_companies\_is\_phone\_subscribed | Stores boolean true/false, whether each associated company is subscribed to phone communications | | associated\_companies\_is\_address\_subscribed | Stores boolean true/false, whether each associated company is subscribed to postal communications | | associated\_companies\_address\_unsubscribed\_at | Timestamp when each associated company unsubscribed from postal communications | | associated\_companies\_note | Note on each associated company | | associated\_companies\_archived\_at | Timestamp when each associated company was archived | | associated\_companies\_created\_at | Timestamp when each associated company was created | | associated\_companies\_updated\_at | Timestamp when each associated company was last updated | | associated\_companies\_first\_time\_supporter\_at | Timestamp when each associated company became a first-time supporter | | associated\_companies\_addresses\_id | Id of each address on each associated company | | associated\_companies\_addresses\_account\_id | Account id of each address on each associated company | | associated\_companies\_addresses\_name | Name of each address on each associated company | | associated\_companies\_addresses\_address\_1 | Address line 1 of each address on each associated company | | associated\_companies\_addresses\_address\_2 | Address line 2 of each address on each associated company | | associated\_companies\_addresses\_city | City of each address on each associated company | | associated\_companies\_addresses\_state | State of each address on each associated company | | associated\_companies\_addresses\_zipcode | Zipcode of each address on each associated company | | associated\_companies\_addresses\_country | Country of each address on each associated company | | associated\_companies\_addresses\_type | Type of each address on each associated company | | associated\_companies\_addresses\_is\_primary | Stores boolean true/false, whether each address on each associated company is the primary address | | associated\_companies\_addresses\_created\_at | Timestamp when each address on each associated company was created | | associated\_companies\_addresses\_updated\_at | Timestamp when each address on each associated company was last updated | | associated\_companies\_primary\_address\_id | Id of the primary address of each associated company | | associated\_companies\_primary\_address\_account\_id | Account id of the primary address of each associated company | | associated\_companies\_primary\_address\_name | Name of the primary address of each associated company | | associated\_companies\_primary\_address\_address\_1 | Address line 1 of the primary address of each associated company | | associated\_companies\_primary\_address\_address\_2 | Address line 2 of the primary address of each associated company | | associated\_companies\_primary\_address\_city | City of the primary address of each associated company | | associated\_companies\_primary\_address\_state | State of the primary address of each associated company | | associated\_companies\_primary\_address\_zipcode | Zipcode of the primary address of each associated company | | associated\_companies\_primary\_address\_country | Country of the primary address of each associated company | | associated\_companies\_primary\_address\_type | Type of the primary address of each associated company | | associated\_companies\_primary\_address\_is\_primary | Stores boolean true/false, whether the primary address record of each associated company is marked primary | | associated\_companies\_primary\_address\_created\_at | Timestamp when the primary address of each associated company was created | | associated\_companies\_primary\_address\_updated\_at | Timestamp when the primary address of each associated company was last updated |