--- title: Add a Push source slug: '1546' canonical_url: https://docs.coveo.com/en/1546/ collection: index-content source_format: adoc --- # Add a Push source Coveo has dedicated [connectors](https://docs.coveo.com/en/2734/) for many web and on-premises systems, letting you quickly make application content searchable. See the [connector directory](https://docs.coveo.com/en/1702/) for the full list. However, you may want to [index](https://docs.coveo.com/en/204/) the content of applications that don't have a dedicated connector. In such cases, the Push [source](https://docs.coveo.com/en/246/) is one of the [generic sources](https://docs.coveo.com/en/1702#generic-connectors) to consider for making the desired content searchable with Coveo. For example, let's say you have an on-premises content management system (CMS) developed in-house. With a push approach, one of your developers could create a crawler to retrieve this content and push it to your Coveo organization using the [Push API](https://docs.coveo.com/en/68/). As the name suggests, this indexing approach involves only outbound requests from your infrastructure, with no inbound requests from the [Coveo Platform](https://docs.coveo.com/en/186/). But before pushing content to your [Coveo organization](https://docs.coveo.com/en/185/), you must create a Push source to receive the content. **Architecture diagram of Coveo's push indexing components**
Details The following diagram shows the main interactions between a custom crawler, the Push API, the indexing pipeline, a Push source, and the other components involved in this process. ![Diagram showing Push API interactions | Coveo](https://docs.coveo.com/en/assets/images/index-content/push-api-diagram.png)
## Source key characteristics The following table presents the key characteristics of a Push source. [%header,cols="2,3,1,3"] |=== 2+|Features ^|Supported |Additional information 2+|[Content update operations](https://docs.coveo.com/en/2039/) ^| |All content update operations are triggered by Push API requests. .3+|[Content security](https://docs.coveo.com/en/1779/) options |[Same users and groups as in your content system](https://docs.coveo.com/en/1779#same-users-and-groups-as-in-your-content-system) ^|[check] | |[Specific users and groups](https://docs.coveo.com/en/1779#specific-users-and-groups) ^|[check] | |[Everyone](https://docs.coveo.com/en/1779#everyone) ^|[check] | .3+|[Metadata indexing for search](#index-metadata) |Automatic mapping of [metadata](https://docs.coveo.com/en/218/) to [fields](https://docs.coveo.com/en/200/) that have the same name 2+a|[Enabled by default](https://docs.coveo.com/en/115/). |Automatically indexed [metadata](https://docs.coveo.com/en/218/) 2+a|Examples of [auto-populated default fields](https://docs.coveo.com/en/155/) (no user-defined metadata required): * `date` * `filetype` (autodetected from [pushed item data](https://docs.coveo.com/en/73/)) * `language` (autodetected from [pushed item data](https://docs.coveo.com/en/73/)) * `uri` (uses mandatory `documentId` parameter value)   Examples of auto-populated fields ([mapping or automapping of metadata](https://docs.coveo.com/en/155/) required): * `author` * `title`   After adding or updating items, [inspect your item field values](https://docs.coveo.com/en/2053#inspect-search-results) in the **Content Browser**. |Extracted but not indexed metadata 2+a|Parameters specified in API request payloads that don't match an existing field name are extracted but not indexed. After adding or updating items, review the [**View and map metadata**](https://docs.coveo.com/en/m9ti0339#view-and-map-metadata-subpage) subpage for the list of indexed metadata and to [index additional metadata](https://docs.coveo.com/en/m9ti0339#index-metadata). |=== ## Add a Push source Follow the instructions below to add a Push source. . On the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page, click **Add source**. . In the **Add a source of content** panel, click the **Push** source tile. . Configure your source. > **Leading practice** > > It's best to create or edit your source in your sandbox organization first. > Once you've confirmed that it indexes the desired content, you can copy your source configuration to your production organization, either [with a snapshot](https://docs.coveo.com/en/3239/) or manually. > > See [About non-production organizations](https://docs.coveo.com/en/2959/) for more information and best practices regarding sandbox organizations. ### "Configuration" tab On the **Add a Push source** page, the **Configuration** tab is selected by default. It contains your source's general information and push process options. #### General information ##### Name Enter a name for your source. > **Leading practice** > > A source name can't be modified once it's saved, therefore be sure to use a short and descriptive name, using letters, numbers, hyphens (`-`), and underscores (`_`). Avoid spaces and other special characters. When coding a crawler to push content in this source, a developer will need this name to [get the corresponding `sourceId`](https://docs.coveo.com/en/3390#copy-a-source-name-or-id) from the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page. ##### Project Use the **Project** selector to associate your source with one or more Coveo [projects](https://docs.coveo.com/en/n7ef0517/). #### "Push process" section ##### API key Select the **Create an API key** checkbox to create an API key with the privileges required to push items to the source and, if the **Same users and groups as in your current permission system** [**Content security**](#content-security-tab) option is selected, those required to push security identities to the relevant security identity provider. [%header,cols="2,1,1"] |=== |Privilege |**Everyone** content security |**Same users and groups as in your current permission system** content security |Content > Push items to sources > Custom (Allow on target source) ^|[check] ^|[check] |Content > Sources > View all ^|[check] ^|[check] |Organization > Organization > View ^|[check] ^|[check] |Content > Push identities to security providers > Allow for all providers | ^|[check] |Content > Security identity providers > View | ^|[check] |=== The **API key** option is only visible when the source is being created. The option is enabled provided that you have the [privilege to edit API keys](https://docs.coveo.com/en/1718#required-privileges) as well as the privileges you need to grant on the API key. If the Push source you're creating has the **Same users and groups as in your current permission system** [**Content security**](#content-security-tab) option selected, an error occurs if the following conditions are met: * The **Create an API key** checkbox is selected. * You don't have the necessary content security-related privileges. To create an API key for the source . If you want the search interface to replicate the [permission](https://docs.coveo.com/en/223/) system of the indexed content repository, select the **Same users and groups as in your current permission system** option in the [**Content security**](#content-security-tab) tab. . Select the **Create an API key** checkbox. . Resume source configurations or click **Add source** to create the source immediately. The **API key successfully created** dialog containing your private key value will appear after you click **Add source**. Click icon:clipboard-text[alt=clipboard-text,width=16] to copy the key value to your clipboard. > **Note** > > If you don't create an API key at source creation, you can do so later from the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page. > > ![Creating a Push source API key | Coveo](:https://docs.coveo.com/en/assets/images/index-content/create-api-key.gif) > > When creating an API key from the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page, the assigned privileges are the same as those listed in the table above. ##### Push API URL This field, available only after source creation, contains the URL you must use to [add and update an item in your source](https://docs.coveo.com/en/133/) in the following format: [%header,cols="~,~"] |=== |Primary region |URL |[US](https://docs.coveo.com/en/2976/) |`+https://api.cloud.coveo.com/push/v1/organizations//sources//documents+` |[Canada](https://docs.coveo.com/en/2976/) |`+https://api-ca.cloud.coveo.com/push/v1/organizations//sources//documents+` |[Europe](https://docs.coveo.com/en/2976/) |`+https://api-eu.cloud.coveo.com/push/v1/organizations//sources//documents+` |[Australia](https://docs.coveo.com/en/2976/) |`+https://api-au.cloud.coveo.com/push/v1/organizations//sources//documents+` |=== The URL contains your organization ID and source ID, which are required parameters for all operations on your source. Click [copy16px] to copy the URL to your clipboard. ### "Items" tab On the **Items** tab, you can enable or disable optical character recognition (OCR) on your content. #### Content and images If you want Coveo to extract text from image files or PDF files containing images, enable the appropriate option. The extracted text is processed as item data, meaning that it's fully searchable and will appear in the item [Quick view](https://docs.coveo.com/en/2760#search-result-quick-view). > **Note** > > When OCR is enabled, ensure the source's relevant [file type configurations](https://docs.coveo.com/en/l3qg9275/) index the item content. > Indexing the item's metadata only or ignoring the item will prevent OCR from being applied. See [Enable optical character recognition](https://docs.coveo.com/en/2937/) for details on this feature. ### "Content security" tab Select who will be able to access the source items through a Coveo-powered [search interface](https://docs.coveo.com/en/2741/). For details on the content security options, see [Content security](https://docs.coveo.com/en/1779/). > **Note** > > If you make your source secure by selecting the **Same users and groups as in your current permission system** content security option, your crawler process must push item permissions along with the content. > For more information, see [Manage security identities in a security identity provider](https://docs.coveo.com/en/132/) and [Manage items and permissions in a Push source](https://docs.coveo.com/en/70/). ### "Access" tab . On the **Access** tab, specify whether each group (and API key, if applicable) in your [Coveo organization](https://docs.coveo.com/en/185/) can view or edit the current source. For example, when creating a new source, you could decide that members of Group A can edit its configuration, while Group B can only view it. For more information, see [Custom access level](https://docs.coveo.com/en/3151#custom-access-level). On the **Access** tab, specify whether each group (and API key, if applicable) in your [Coveo organization](https://docs.coveo.com/en/185/) can view or edit the current source. For example, when creating a new source, you could decide that members of Group A can edit its configuration, while Group B can only view it. For more information, see [Custom access level](https://docs.coveo.com/en/3151#custom-access-level). ### Index metadata To use [metadata](https://docs.coveo.com/en/218/) values in [search interface](https://docs.coveo.com/en/2741/) [facets](https://docs.coveo.com/en/198/) or result templates, the metadata must be [mapped](https://docs.coveo.com/en/217/) to [fields](https://docs.coveo.com/en/200/). With Push sources, [Coveo automatically maps metadata to fields with the same name](https://docs.coveo.com/en/1640#automatically-and-manually-created-mappings). Coveo has some [default fields](https://docs.coveo.com/en/1833#field-origin) for commonly extracted metadata (for example, `author`, `date`). For any custom metadata defined in your [content update HTTP requests](https://docs.coveo.com/en/90#step-2-upload-the-content-update-into-the-file-container), you must create a field with the same name to store the metadata values. For example, if you've defined a `department` metadata, you must have a `department` field to store the metadata values. . Review the [body](https://docs.coveo.com/en/78#item-models) in your [content update HTTP requests](https://docs.coveo.com/en/90#step-2-upload-the-content-update-into-the-file-container) for the list of metadata you're currently extracting from your content. . On the [**Fields**](https://platform.cloud.coveo.com/admin/#/orgid/content/fields/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/fields/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/fields/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/fields/)) page, for each metadata you want to use in facets or result templates, [add a field](https://docs.coveo.com/en/1833#add-a-field) with the same name, unless one already exists. > **Note** > > Fields are shared across sources in your [Coveo organization](https://docs.coveo.com/en/185/). > If a field with the same name as the metadata you want to index already exists and its [configuration](https://docs.coveo.com/en/1833#field-options) suits you, use it for the metadata you want to index. > Otherwise, you can [create a mapping](https://docs.coveo.com/en/1640#manage-mappings) to index the metadata in a new field with a different name. **Example** You decided to retrieve picture URIs from your content using the following metadata definition in your [content update HTTP requests](https://docs.coveo.com/en/90#step-2-upload-the-content-update-into-the-file-container): `"pictureuri": "http://www.example.com/myimage.png"` Since there's no Coveo `pictureuri` default field, you need to create the `pictureuri` field, unless it already exists. . To reindex your source with your new mappings, perform a full push of your items. . Once the source is rebuilt, review your item field values. They should now include the values of the metadata you selected to index. .. On the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page, click your source, and then click **More** > **Open in Content Browser** in the Action bar. .. Select the card of the item for which you want to inspect properties, and then click **Properties** in the Action bar. .. In the panel that appears, select the **Fields** tab. ## Required privileges [%header,cols="~,~,~,~"] |=== |Actions |Service |Domain |Required access level .3+|View sources, view source update schedules, and subscribe to source notifications .2+|Content |Fields .3+|View |Sources |Organization |Organization .3+|Edit sources, edit source update schedules, and edit source mappings |Organization |Organization |View .2+|Content |Fields .2+|Edit |Sources .3+|Manage Push source items, update the Push source status .2+|Content |Push items to sources |Allow (on target source) |Sources |View |Organization |Organization |View .3+|Manage security identities .2+|Content |Push identities to security providers |Allow (on target providers) |Security identity providers |View |Organization |Organization |View .4+|View and map metadata .2+|Content |Source metadata .3+|View |Fields |Organization |Organization |Content |Sources |Edit |=== > **Notes** > > * The **Edit all** privilege isn't required to create sources. > When granting privileges for the [Sources](https://docs.coveo.com/en/1707#sources-domain) domain, you can grant a group or API key the **View all** or [**Custom**](https://docs.coveo.com/en/3151#custom-access-level) access level, instead of **Edit all**, and then select the **Can Create** checkbox to allow users to create sources. > See [Can Create ability dependence](https://docs.coveo.com/en/3151#can-create-ability-dependence) for more information. > > * The ability to manage security identities is only required when using the **Same users and groups as in your current permission system** [content security](#content-security-tab) option. ## What's next? . If your Push [source](https://docs.coveo.com/en/246/) is secured, [create a security identity provider](https://docs.coveo.com/en/85/). . [Create the fields](https://docs.coveo.com/en/1833#add-a-field) you need in your [index](https://docs.coveo.com/en/204/). Remember, any metadata you push to your [source](https://docs.coveo.com/en/246/) is [automatically mapped](https://docs.coveo.com/en/115/) to an existing field with the same name. For example, `version` metadata values in the items you push will automatically populate the `version` field if this field exists in your [Coveo organization](https://docs.coveo.com/en/185/). > **Important** > > * Keep track of the field names you create using the [**Fields**](https://platform.cloud.coveo.com/admin/#/orgid/content/fields/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/fields/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/fields/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/fields/)) page. > > * Avoid creating fields that [Coveo automatically creates](https://docs.coveo.com/en/155/). > > * Don't create fields with names that match [reserved item payload key names](https://docs.coveo.com/en/162/). > It's good practice to use a naming convention that clearly distinguishes your field names and metadata names from Coveo's. . [Use the Push API](https://docs.coveo.com/en/68/) to push content to your [source](https://docs.coveo.com/en/246/).