{"id":31644475,"url":"https://github.com/knennigtri/aep-tag-tool","last_synced_at":"2026-05-18T10:38:25.143Z","repository":{"id":62135057,"uuid":"457057695","full_name":"knennigtri/aep-tag-tool","owner":"knennigtri","description":"Quickly export AEP tag properties to import into other organizations","archived":false,"fork":false,"pushed_at":"2023-11-29T21:07:21.000Z","size":1313,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-07T04:57:38.369Z","etag":null,"topics":["adobe","adobe-experience-platform","adobe-launch","aep"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/knennigtri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-02-08T18:36:28.000Z","updated_at":"2022-12-12T19:29:59.000Z","dependencies_parsed_at":"2023-02-18T01:35:27.329Z","dependency_job_id":"8599556e-ef21-4c48-80b8-10e6e3224afc","html_url":"https://github.com/knennigtri/aep-tag-tool","commit_stats":{"total_commits":148,"total_committers":1,"mean_commits":148.0,"dds":0.0,"last_synced_commit":"b01f86926330d25824349ea38ac1f15a964c86b4"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/knennigtri/aep-tag-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knennigtri%2Faep-tag-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knennigtri%2Faep-tag-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knennigtri%2Faep-tag-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knennigtri%2Faep-tag-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/knennigtri","download_url":"https://codeload.github.com/knennigtri/aep-tag-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knennigtri%2Faep-tag-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33175172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"ssl_error","status_checked_at":"2026-05-18T09:27:28.300Z","response_time":71,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adobe","adobe-experience-platform","adobe-launch","aep"],"created_at":"2025-10-07T04:53:09.667Z","updated_at":"2026-05-18T10:38:20.120Z","avatar_url":"https://github.com/knennigtri.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AEP Tag Tool\n\n[![Build \u0026 Publish to NPM and GHP](https://github.com/knennigtri/aep-tag-tool/actions/workflows/release.yml/badge.svg?branch=main)](https://github.com/knennigtri/aep-tag-tool/actions/workflows/release.yml)\n\nImport, Export, and Delete web properties from Adobe Expience Platform Tags, previously known as Launch.\n\n## Overview\n\nThis is a project to automates postman collections using the [Reactor API](https://www.adobe.io/experience-platform-apis/references/reactor/). This project makes it easier to quickly import a Tag property into an Adobe Organization for demo purposes or if you are using the same Tag property across organizations. The collections are generic enough to run with without modifications. \n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n- [Installation](#installation)\n- [Command Line Tool](#command-line-tool)\n- [Create config file for Authentication](#create-config-file-for-authentication)\n- [Usage](#usage)\n- [Export a Tag](#export-a-tag)\n- [Import a Tag](#import-a-tag)\n  - [CEDRLP params](#cedrlp-params)\n  - [Import into other Adobe Organizations](#import-into-other-adobe-organizations)\n    - [newSettings.yml](#newsettingsyml)\n- [Delete tag properties that contain a specific string](#delete-tag-properties-that-contain-a-specific-string)\n- [Using this tool without NPM](#using-this-tool-without-npm)\n  - [Postman files](#postman-files)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## Installation\nTo install the command line tool globally, run:\n\n```shell\nnpm install -g @knennigtri/aep-tag-tool\n```\n\n## Command Line Tool\n\nExport a tag property:\n```bash\n aep-tag-tool -c auth-config.json --export PR12345678901234567890\n```\n\nImport a tag property:\n```bash\n aep-tag-tool -c auth-config.json --import tagPropertyData.json\n```\n\nImport a tag property into a different organization with unique organization values\n```bash\n aep-tag-tool -c auth-config.json --import tagPropertyData.json --settings newSettings.yml\n```\n\nDelete a tag properties that contain 2022 in the title\n```bash\n aep-tag-tool -c auth-config.json --delete \"2023\"\n```\n\n## Create config file for Authentication\n1. Create and [Adobe IO project](https://developer.adobe.com/dep/guides/dev-console/create-project/)\n   1. Add the Experiance Platform Launch API\n      1. Generate a public/private key pair\n      2. (JWT only) Download the public/private key\n   2. Go to the Credentials screen and download the JSON. Adobe has deprecated JWT and OAuth is preferred.\n\nFor OAuth credentials, make sure the JSON contains at least:\n    \n```json\n{\n  \"ORG_ID\": \"xxxxxxxxxxxxxxxxxxxxx@AdobeOrg\",\n  \"CLIENT_SECRETS\": [ \"xxxxxxxxxxxxxxxxxxxxx\" ],\n  \"CLIENT_ID\": \"xxxxxxxxxxxxxxxxxxxxx\",\n  \"SCOPES\": [\n    \"xxxxxxxxx\",\n    \"xxxxxxxxx\",\n    \"xxxxxxxxx\"\n  ]\n}\n```\n\nFor JWT credentials, download the private key add PRIVATE_KEY:\n\n```json\n{\n  \"CLIENT_SECRET\": \"xxxxxxxxxxxxxxxxxxxxx\",\n  \"ORG_ID\": \"xxxxxxxxxxxxxxxxxxxxx@AdobeOrg\",\n  \"API_KEY\": \"xxxxxxxxxxxxxxxxxxxxx\",\n  \"TECHNICAL_ACCOUNT_ID\": \"xxxxxxxxxxxxxxxxxxxxx@techacct.adobe.com\",\n  \"TECHNICAL_ACCOUNT_EMAIL\": \"xxxxxxxxxxxxxxxxxxxxx@techacct.adobe.com\",\n  \"PUBLIC_KEYS_WITH_EXPIRY\": {},\n  \"PRIVATE_Key\": \"path/to/private.key\"\n}\n```\n\nAlternatively, you can use yaml as well:\n\n```yaml\n---\nCLIENT_ID: xxxxxxxxxxxxxxxxxxx\nCLIENT_SECRET: xxxxxxxxxxxxxxxxxxx\nORG_ID: xxxxxxxxxxxxxxxxxxx@AdobeOrg\nSCOPES: [xxxxx, xxxxxx, xxxxx]\n---\n```\n\n## Usage\n\n```bash\naep-tag-tool -h\nUsage: aep-tag-tool [ARGS]\n Arguments:\n    -c, --config \u003cmyconfig.yml\u003e         Specify a config file\n    -e, --export \u003cPID\u003e                  Mode to export a given property ID.\n    -i, --import \u003cpropertyFile.json\u003e    Mode to import a property given a config file.\n    -d, --delete \u003csearchStr\u003e            Mode to delete properties containing a specific string\n    -C,-E,-D,-R,-L,-P                   [import] Options to partially import. See -h import\n    -t, --title  \u003ctitle\u003e                [import] optional new title of tag property\n    -p, --pid    \u003cpid\u003e                  [import] import into an existing property ID\n    -s, --settings  \u003csettings.yml\u003e      [import] unique property settings for a new org\n    -o, --output \u003cfolder\u003e               [export] folder path to save export property. Default ./\n    -v, --version                       Displays version of this package\n    --jwt                               Use if using JWT Auth. Deprecated by Adobe. Default is OAuth.\n    -h, --help\n               config\n               export \n               import\n               delete\n               settings\n               debug\n```\n## Export a Tag\nExport mode allows for a web property from AEP Tags to be exported as JSON. Exporting a tag will create a new file with the same name as the web property. The JSON file contents will have:\n\n   * exported property id\n   * property title\n   * extensions\n   * edata elements\n   * rules and their rule components\n\nRequires:\n```\n -c, --config \u003cmyconfig.yml\u003e         Specify a config file\n -e, --export \u003cPID\u003e                  Mode to export a given property ID.\n```\n\nOptionally include the PID with a parameter\n```\n -p, --pid    \u003cpid\u003e                  [export, import] property ID\n```\n\nOptionally specify the output folder\n```\n -o, --output \u003cfolder\u003e               [export] folder path to save export property. Default ./ \n```\n\n## Import a Tag\nImport mode allows for an exported web property from AEP Tags to be imported into an Adobe organization. Import mode will:\n * Create a new web property (`obj.propertyName`) with a host and dev/stage/prod environments\n * Add imported extensions (`obj.extensions`)\n * Create imported data elements (`obj.dataElements`)\n * Create imported rules (`obj.rules.*`)\n * Build the library into dev\n * Publish the library into prod\n\n\u003e You can optionally specify what to create/import/publish with the [CEDRLP parameters](#cedrlp-params). \n\nImporting into a different Adobe organization should be used with caution since many extension settings are specific to the Adobe organization they are exported from. See [Import into other Organizations](#import-into-other-organizations).\n\nRequires:\n```\n -c, --config \u003cmyconfig.yml\u003e         Specify a config file\n -i, --import \u003cpropertyFile.json\u003e    Mode to import a property given a config file.\n```\n\nOptionally include the property file with a parameter\n```\n -f, --file   \u003cfile\u003e                 [import] file containing import json\n -t, --title  \u003ctitle\u003e                [import] optional new title of tag property;\n -p, --pid    \u003cpid\u003e                  [export, import] property ID\n```\nNote: PID is ignored unless importing to an existing property (-C is omited)\n\npropertyFile.json file requires:\n 1. propertyFile.propertyName\n 2. propertyFile.extensions\n 3. propertyFile.dataElements\n 4. propertyFile.rules.[rules]\n\n### CEDRLP params\nYou can specify exactly what you want to create/import with these params. \nNo matter the parameter order, they will always execute in the order below.\n  `-C`  Creates a new property.\n\nIf `-C` is not used with the remaining parameters, a PID is required in parameters\n\n  `-E`  Imports extensions. `propertyFile.extensions` is required.\n\n  `-D`  Imports data elements. `propertyFile.dataElement` is required.\n\n  `-R`  Imports rule components. `propertyFile.rules.[rules]` is required.\n  \n  `-L`  Builds a library of all items into the Dev environment\n  \n  `-P`  Publishes the library into Prod\n\n\n### Import into other Adobe Organizations\nWhen importing into new organizations, some values may need to be changed in the import file. \nYou can create a settings.yml file to find/replace extension/dataElement settings key/value pairs\nin your tag property.\n\nTo better understand how to build this yaml file, export a tag property first and investivate the structure of a extension or data element. An example export json might looks like:\n```\n{\n  \"propID\": \"PR79571639d7bd48cba6f936ab611ced96\",\n  \"propertyName\": \"CS - Target, Analytics\",\n  \"extensions\": [\n    {\n      \"id\": \"EX068a1f9c2d124c8fb44abb5e519f7293\",\n      \"type\": \"extensions\",\n      \"attributes\": {\n        \"created_at\": \"2020-04-24T18:59:50.894Z\",\n        \"enabled\": true,\n        \"name\": \"adobe-analytics\",\n        \"published\": true,\n        \"delegate_descriptor_id\": \"adobe-analytics::extensionConfiguration::config\",\n        \"display_name\": \"Adobe Analytics\",\n        \"review_status\": \"unsubmitted\",\n        \"version\": \"1.8.5\",\n        \"settings\": \"{\\\"orgId\\\":\\\"123456@AdobeOrg\\\",\\\"libraryCode\\\":{\\\"type\\\":\\\"managed\\\",\\\"company\\\":\\\"XXXXX\\\",\\\"accounts\\\":{\\\"staging\\\":[\\\"XXXXXX\\\"],\\\"production\\\":[\\\"XXXXXXX\\\"],\\\"development\\\":[\\\"XXXXXXX\\\"]},\\\"scopeTrackerGlobally\\\":false},\\\"trackerProperties\\\":{\\\"currencyCode\\\":\\\"USD\\\",\\\"trackInlineStats\\\":true,\\\"trackDownloadLinks\\\":true,\\\"trackExternalLinks\\\":true,\\\"linkDownloadFileTypes\\\":}}\"\n      }\n    },\n    ...\n  ]\n}\n```\n#### newSettings.yml\nWhen building the newSettings.yml file, it should be structured:\nlevel 1 - extensions | dataElements\nlevel 2 - attibutes.name based on the export json of the desired element\nlevel 3 - the key/value pair in the attributes.settings that you would like to replace\n\nExample newsettings.yml\n```\n---\nextensions:\n adobe-mcid:\n  orgId: \"123345@AdobeOrg\"\n adobe-target:\n  imsOrgId: \"123345@AdobeOrg\"\n  clientCode: \"XXXXXXX\"\n  serverDomain: \"XXXX.tt.omtrdc.net\"\n adobe-analytics:\n  orgId: \"123345@AdobeOrg\"\n  company: \"XXXXXXX\"\n  staging: \"reportSuiteXXXX\"\n  production: \"reportSuiteXXXX\"\n  development: \"reportSuiteXXXX\"\ndataElements:\n myDataEleement:\n  name: \"valueXXXXXX\"\n---\n```\n\nOptionally you can manually change the values in a new organization by:\n1. Export the desired property as specified above\n2. In the new Organization, create an Adobe IO project with the Launch API\n   1. download the OAuth JSON\n3. The command below will only import (E)xtensions, (D)ata Elements and (R)ules from the origPropertyExport.json and build a (L)ibrary into the Dev Environment:\n```\n aep-tag-tool -c newOrg-oauth-config.json --import origPropertyExport.json -EDR\n```\n1. Manually update any values unique to the Adobe org. Typically in the Extension values.\n2. Verify the import and build and deploy a new Library\n\n## Delete tag properties that contain a specific string\nQuickly delete web properties that might have been created with this tool. Delete mode allows you to search for web properties in an Adobe organization based on a search string. If any web properties contain the search string, they are deleted. This is particularly useful if you are developing your own property to import/export since all properties end with a timestamp. Searching (-s) for `2022-10-25` would delete `MyProperty 2022-10-25T20:57:42.049Z`, `MyProperty 2022-10-25T21:57:42.049Z`, and `MyProperty 2022-10-25T20:58:42.049Z`.\n\nRequires:\n```\n -c, --config \u003cmyconfig.yml\u003e         Specify a config file\n -d, --delete \u003csearchStr\u003e            Mode to delete properties containing a specific string\n```\n\nOptionally include the search string with a parameter\n```\n -s, --search \u003cstr\u003e                  [delete] search string for properties deletion\n```\n\n## Using this tool without NPM\nThe Postman collections apart of this tool can also be used with [Postman](https://www.postman.com/) or [npm newman](https://www.npmjs.com/package/newman). See the [extra docs](docs/README.md) to learn more.\n\n### Postman files\n* Download the [OAuth Authentication Collection](postman/Adobe%20IO%20Token%20OAuth.postman_collection.json)\n* Download the [Import Collection](postman/Import%20Tag%20Property.postman_collection.json)\n* Download the [Export Collection](postman/Export%20Tag%20Property.postman_collection.json)\n* Download the [Delete Collection](postman/Export%20Tag%20Property.postman_collection.json)\n* Download a sample [Environment file](postman/aep-tag-tool.postman_environment.json)\n  * See configuration instructions: [docs/environment.md](docs/environment.md)\n* Download the [JWT Authentication Collection](postman/Adobe%20IO%20Token.postman_collection.json)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknennigtri%2Faep-tag-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknennigtri%2Faep-tag-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknennigtri%2Faep-tag-tool/lists"}