From e83b92b7e5a1ac32adac35783599c9c81e32178e Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Fri, 8 Mar 2024 17:37:19 -0500 Subject: [PATCH 01/14] justnems-analytics-updates Updated utm fields throughout the app --- CONTRIBUTING.md | 8 ++--- README.md | 20 ++++++------- apps/api/README.md | 4 +-- apps/api/jarvis-api-intro.md | 2 +- .../framework/idempotency.interceptor.ts | 2 +- .../framework/swagger/swagger.controller.ts | 30 +++++++++---------- .../cypress/tests/digest-playground.spec.ts | 2 +- .../tests/integrations-list-modal.spec.ts | 2 +- .../tests/integrations-list-page.spec.ts | 2 +- .../get-started/consts/DelayUseCase.const.tsx | 2 +- .../consts/DigestUseCase.const.tsx | 2 +- .../get-started/consts/InAppUseCase.const.tsx | 2 +- .../consts/MultiChannelUseCase.const.tsx | 2 +- .../consts/TranslationUseCase.const.tsx | 2 +- .../integrations/components/NovuInAppForm.tsx | 2 +- packages/cli/README.MD | 4 +-- packages/node/README.md | 2 +- .../notification-center-angular/README.md | 2 +- packages/stateless/README.md | 2 +- 19 files changed, 47 insertions(+), 47 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index befcd559119..7097333e25c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -56,10 +56,10 @@ You can open a new issue with this [issue form](https://github.com/novuhq/novu/i The project is a monorepo, meaning that it is a collection of multiple packages managed in the same repository. -To learn more about the project structure and running the project locally, please have a look [here](https://docs.novu.co/community-support/introduction#run-novu-locally). +To learn more about the project structure and running the project locally, please have a look [here](https://docs.novu.co/community-support/introduction#run-novu-locally?utm_campaign=github-contrib). After cloning your fork, you will need to run the `npm run setup:project` command to install and build all dependencies. -To learn a detailed guide on running the project locally, checkout our guide on [how to run novu in local machine](https://docs.novu.co/community/run-in-local-machine). +To learn a detailed guide on running the project locally, checkout our guide on [how to run novu in local machine](https://docs.novu.co/community/run-in-local-machine?utm_campaign=github-contrib). ## Missing a Feature? @@ -86,8 +86,8 @@ Questions, suggestions, and thoughts are most welcome. Feel free to open a [GitH - Help create tutorials and blog posts - Request a feature by submitting a proposal - Report a bug -- **Improve documentation** - fix incomplete or missing [docs](https://docs.novu.co/), bad wording, examples or explanations. +- **Improve documentation** - fix incomplete or missing [docs](https://docs.novu.co/?utm_campaign=github-contrib), bad wording, examples or explanations. ## Missing a provider? -If you are in need of a provider we do not yet have, you can request a new one by [submitting an issue](#submitting-an-issue). Or you can build a new one by following our [create a provider guide](https://docs.novu.co/community/add-a-new-provider). +If you are in need of a provider we do not yet have, you can request a new one by [submitting an issue](#submitting-an-issue). Or you can build a new one by following our [create a provider guide](https://docs.novu.co/community/add-a-new-provider?utm_campaign=github-contrib). diff --git a/README.md b/README.md index 75b5f1e9f9f..6703ab98ee1 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ npx novu init After setting up your account using the cloud or docker version, you can trigger the API using the `@novu/node` package. -For API documentation and reference, please visit [Novu API Reference] (https://docs.novu.co/api-reference/events/trigger-event). +For API documentation and reference, please visit [Novu API Reference] (https://docs.novu.co/api-reference/events/trigger-event?utm_campaign=github-readme). To get started with the Node.js package, you can install it using npm: @@ -148,7 +148,7 @@ Create notification workflows right from your IDE and integrate with MJML/React - Define workflow and step validations with Zod or JSON Schema - Modify content and behavior via Web management input panel -[Request Early Access](https://novu.co/novu-echo-coming-soon/?utm_campaign=github) +[Request Early Access](https://novu.co/novu-echo-coming-soon/?utm_campaign=github-readme) ```ts @@ -202,17 +202,17 @@ client.workflow('comment-on-post', async ({step, subscriber}) => { ## Embeddable Notification Center -Using the Novu API and admin panel, you can easily add a real-time notification center to your web app without building it yourself. You can use our [React](https://docs.novu.co/notification-center/client/react/get-started) / [Vue](https://docs.novu.co/notification-center/client/vue) / [Angular](https://docs.novu.co/notification-center/client/angular) components or an [iframe embed](https://docs.novu.co/notification-center/client/iframe), as well as a [Web component](https://docs.novu.co/notification-center/client/web-component). +Using the Novu API and admin panel, you can easily add a real-time notification center to your web app without building it yourself. You can use our [React](https://docs.novu.co/notification-center/client/react/get-started?utm_campaign=github-readme) / [Vue](https://docs.novu.co/notification-center/client/vue?utm_campaign=github-readme) / [Angular](https://docs.novu.co/notification-center/client/angular?utm_campaign=github-readme) components or an [iframe embed](https://docs.novu.co/notification-center/client/iframe?utm_campaign=github-readme), as well as a [Web component](https://docs.novu.co/notification-center/client/web-component?utm_campaign=github-readme).
notification-center-912bb96e009fb3a69bafec23bcde00b0 -Read more about how to add a notification center to your app with the Novu API [here](https://docs.novu.co/notification-center/getting-started) +Read more about how to add a notification center to your app with the Novu API [here](https://docs.novu.co/notification-center/getting-started?utm_campaign=github-readme)

- React Component - · Vue Component - · Angular Component + React Component + · Vue Component + · Angular Component

@@ -277,7 +277,7 @@ Novu provides a single API to manage providers across multiple channels with a s #### 📱 In-App -- [x] [Novu](https://docs.novu.co/notification-center/getting-started) +- [x] [Novu](https://docs.novu.co/notification-center/getting-started?utm_campaign=github-readme) - [ ] MagicBell #### Other (Coming Soon...) @@ -298,9 +298,9 @@ We are more than happy to help you. If you are getting any errors or facing prob ## 🔗 Links -- [Home page](https://novu.co?utm_source=github) +- [Home page](https://novu.co?utm_campaign=github-readme) - [Contribution Guidelines](https://github.com/novuhq/novu/blob/main/CONTRIBUTING.md) -- [Run Novu Locally](https://docs.novu.co/community/run-in-local-machine) +- [Run Novu Locally](https://docs.novu.co/community/run-in-local-machine?utm_campaign=github-readme) ## 🛡️ License diff --git a/apps/api/README.md b/apps/api/README.md index cc9d7b27658..5417b826f49 100644 --- a/apps/api/README.md +++ b/apps/api/README.md @@ -27,7 +27,7 @@ The command will return warnings and errors that must be fixed before the Github ## Running the API -See the docs for [Run in Local Machine](https://docs.novu.co/community/run-in-local-machine) to get setup. Then run: +See the docs for [Run in Local Machine](https://docs.novu.co/community/run-in-local-machine?utm_campaign=github-api-readme) to get setup. Then run: ```bash # Run the API in watch mode @@ -43,7 +43,7 @@ $ npm run test ``` ### E2E tests -See the docs for [Running on Local Machine - API Tests](https://docs.novu.co/community/run-in-local-machine#api). +See the docs for [Running on Local Machine - API Tests](https://docs.novu.co/community/run-in-local-machine#api?utm_campaign=github-api-readme). ## Migrations Database migrations are included for features that have a hard dependency on specific data being available on database entities. These migrations are run by both Novu Cloud and Novu Self-Hosted users to support new feature releases. diff --git a/apps/api/jarvis-api-intro.md b/apps/api/jarvis-api-intro.md index be820f9e590..f5ef84776ef 100644 --- a/apps/api/jarvis-api-intro.md +++ b/apps/api/jarvis-api-intro.md @@ -11,7 +11,7 @@ This issue was tagged as related to `@novu/api` and the related code is located If that's the first time you want to contribute to Novu here are a few simple steps to get you started: 1. Fork the repository and clone your fork to your local machine. 2. Install the dependencies using `npm run setup:project`. - 3. Create a new branch with the number of the issue, for example: `1454-fix-something-cool` and start contributing based on the [Contributing Guide](https://docs.novu.co/community/run-in-local-machine) or the short guide in the section below. + 3. Create a new branch with the number of the issue, for example: `1454-fix-something-cool` and start contributing based on the [Contributing Guide](https://docs.novu.co/community/run-in-local-machine?utm_campaign=github-jarvis) or the short guide in the section below. 4. Create a Pull request and follow the template of creation diff --git a/apps/api/src/app/shared/framework/idempotency.interceptor.ts b/apps/api/src/app/shared/framework/idempotency.interceptor.ts index 7331fc7282d..c731ffba18e 100644 --- a/apps/api/src/app/shared/framework/idempotency.interceptor.ts +++ b/apps/api/src/app/shared/framework/idempotency.interceptor.ts @@ -28,7 +28,7 @@ enum ReqStatusEnum { ERROR = 'error', } -export const DOCS_LINK = 'https://docs.novu.co/additional-resources/idempotency'; +export const DOCS_LINK = 'https://docs.novu.co/additional-resources/idempotency?utm_campaign=inapp-interceptor'; export const ALLOWED_AUTH_SCHEMES = [ApiAuthSchemeEnum.API_KEY]; const ALLOWED_METHODS = ['post', 'patch']; diff --git a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts index f9a710ab3da..2282f091f1c 100644 --- a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts +++ b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts @@ -21,37 +21,37 @@ const options = new DocumentBuilder() .addTag( 'Events', `Events represent a change in state of a subscriber. They are used to trigger workflows, and enable you to send notifications to subscribers based on their actions.`, - { url: 'https://docs.novu.co/workflows' } + { url: 'https://docs.novu.co/workflows?utm_campaign=inapp-swagger' } ) .addTag( 'Subscribers', `A subscriber in Novu represents someone who should receive a message. A subscriber’s profile information contains important attributes about the subscriber that will be used in messages (name, email). The subscriber object can contain other key-value pairs that can be used to further personalize your messages.`, - { url: 'https://docs.novu.co/subscribers/subscribers' } + { url: 'https://docs.novu.co/subscribers/subscribers?utm_campaign=inapp-swagger' } ) .addTag( 'Topics', `Topics are a way to group subscribers together so that they can be notified of events at once. A topic is identified by a custom key. This can be helpful for things like sending out marketing emails or notifying users of new features. Topics can also be used to send notifications to the subscribers who have been grouped together based on their interests, location, activities and much more.`, - { url: 'https://docs.novu.co/subscribers/topics' } + { url: 'https://docs.novu.co/subscribers/topics?utm_campaign=inapp-swagger' } ) .addTag( 'Notification', 'A notification conveys information from source to recipient, triggered by a workflow acting as a message blueprint. Notifications can be individual or bundled as digest for user-friendliness.', - { url: 'https://docs.novu.co/getting-started/introduction' } + { url: 'https://docs.novu.co/getting-started/introduction?utm_campaign=inapp-swagger' } ) .addTag( 'Integrations', `With the help of the Integration Store, you can easily integrate your favorite delivery provider. During the runtime of the API, the Integrations Store is responsible for storing the configurations of all the providers.`, - { url: 'https://docs.novu.co/channels-and-providers/integration-store' } + { url: 'https://docs.novu.co/channels-and-providers/integration-store?utm_campaign=inapp-swagger' } ) .addTag( 'Layouts', `Novu allows the creation of layouts - a specific HTML design or structure to wrap content of email notifications. Layouts can be manipulated and assigned to new or existing workflows within the Novu platform, allowing users to create, manage, and assign these layouts to workflows, so they can be reused to structure the appearance of notifications sent through the platform.`, - { url: 'https://docs.novu.co/content-creation-design/layouts' } + { url: 'https://docs.novu.co/content-creation-design/layouts?utm_campaign=inapp-swagger' } ) .addTag( 'Workflows', `All notifications are sent via a workflow. Each workflow acts as a container for the logic and blueprint that are associated with a type of notification in your system.`, - { url: 'https://docs.novu.co/workflows' } + { url: 'https://docs.novu.co/workflows?utm_campaign=inapp-swagger' } ) .addTag( 'Notification Templates', @@ -61,42 +61,42 @@ const options = new DocumentBuilder() .addTag( 'Changes', `Changes represent a change in state of an environment. They are analagous to a pending pull request in git, enabling you to test changes before they are applied to your environment and atomically apply them when you are ready.`, - { url: 'https://docs.novu.co/platform/environments#promoting-pending-changes-to-production' } + { url: 'https://docs.novu.co/platform/environments#promoting-pending-changes-to-production?utm_campaign=inapp-swagger' } ) .addTag( 'Environments', `Novu uses the concept of environments to ensure logical separation of your data and configuration. This means that subscribers, and preferences created in one environment are never accessible to another.`, - { url: 'https://docs.novu.co/platform/environments' } + { url: 'https://docs.novu.co/platform/environments?utm_campaign=inapp-swagger' } ) .addTag( 'Inbound Parse', `Inbound Webhook is a feature that allows processing of incoming emails for a domain or subdomain. The feature parses the contents of the email and POSTs the information to a specified URL in a multipart/form-data format.`, - { url: 'https://docs.novu.co/platform/inbound-parse-webhook' } + { url: 'https://docs.novu.co/platform/inbound-parse-webhook?utm_campaign=inapp-swagger' } ) .addTag( 'Feeds', `Novu provides a notification activity feed that monitors every outgoing message associated with its relevant metadata. This can be used to monitor activity and discover potential issues with a specific provider or a channel type.`, - { url: 'https://docs.novu.co/activity-feed' } + { url: 'https://docs.novu.co/activity-feed?utm_campaign=inapp-swagger' } ) .addTag( 'Tenants', `A tenant represents a group of users. As a developer, when your apps have organizations, they are referred to as tenants. Tenants in Novu provides the ability to tailor specific notification experiences to users of different groups or organizations.`, - { url: 'https://docs.novu.co/tenants' } + { url: 'https://docs.novu.co/tenants?utm_campaign=inapp-swagger' } ) .addTag( 'Messages', `A message in Novu represents a notification delivered to a recipient on a particular channel. Messages contain information about the request that triggered its delivery, a view of the data sent to the recipient, and a timeline of its lifecycle events. Learn more about messages.`, - { url: 'https://docs.novu.co/workflows/messages' } + { url: 'https://docs.novu.co/workflows/messages?utm_campaign=inapp-swagger' } ) .addTag( 'Organizations', `An organization serves as a separate entity within your Novu account. Each organization you create has its own separate integration store, workflows, subscribers, and API keys. This separation of resources allows you to manage multi-tenant environments and separate domains within a single account.`, - { url: 'https://docs.novu.co/platform/organizations' } + { url: 'https://docs.novu.co/platform/organizations?utm_campaign=inapp-swagger' } ) .addTag( 'Execution Details', `Execution details are used to track the execution of a workflow. They provided detailed information on the execution of a workflow, including the status of each step, the input and output of each step, and the overall status of the execution.`, - { url: 'https://docs.novu.co/activity-feed' } + { url: 'https://docs.novu.co/activity-feeds?utm_campaign=inapp-swagger' } ) .build(); diff --git a/apps/web/cypress/tests/digest-playground.spec.ts b/apps/web/cypress/tests/digest-playground.spec.ts index 58fbeca2cfe..c532b64523c 100644 --- a/apps/web/cypress/tests/digest-playground.spec.ts +++ b/apps/web/cypress/tests/digest-playground.spec.ts @@ -16,7 +16,7 @@ describe('Digest Playground Workflow Page', function () { cy.url().should('include', '/digest-playground'); cy.contains('Digest Workflow Playground'); - cy.get('a[href="https://docs.novu.co/workflows/digest?utm_campaign=in-app"]').contains('Learn more in docs'); + cy.get('a[href="https://docs.novu.co/workflows/digest?utm_campaign=inapp-digest"]').contains('Learn more in docs'); }); it('the set up digest workflow should redirect to template edit page', function () { diff --git a/apps/web/cypress/tests/integrations-list-modal.spec.ts b/apps/web/cypress/tests/integrations-list-modal.spec.ts index e423c9b615b..fd52bfc8b49 100644 --- a/apps/web/cypress/tests/integrations-list-modal.spec.ts +++ b/apps/web/cypress/tests/integrations-list-modal.spec.ts @@ -773,7 +773,7 @@ describe('Integrations List Modal', function () { 'Select a framework to set up credentials to start sending notifications.' ); cy.getByTestId('update-provider-sidebar') - .find('a[href="https://docs.novu.co/notification-center/introduction?utm_campaign=in-app"]') + .find('a[href="https://docs.novu.co/notification-center/introduction?utm_campaign=inapp-integrations-modal"]') .contains('Explore set-up guide'); cy.getByTestId('is_active_id').should('have.value', 'true'); cy.window().then((win) => { diff --git a/apps/web/cypress/tests/integrations-list-page.spec.ts b/apps/web/cypress/tests/integrations-list-page.spec.ts index 0d0fe14524a..7cbe9c0126a 100644 --- a/apps/web/cypress/tests/integrations-list-page.spec.ts +++ b/apps/web/cypress/tests/integrations-list-page.spec.ts @@ -924,7 +924,7 @@ describe('Integrations List Page', function () { 'Select a framework to set up credentials to start sending notifications.' ); cy.getByTestId('update-provider-sidebar') - .find('a[href="https://docs.novu.co/notification-center/introduction?utm_campaign=in-app"]') + .find('a[href="https://docs.novu.co/notification-center/introduction?utm_campaign=inapp-integrations-list"]') .contains('Explore set-up guide'); cy.getByTestId('is_active_id').should('have.value', 'true'); cy.window().then((win) => { diff --git a/apps/web/src/pages/get-started/consts/DelayUseCase.const.tsx b/apps/web/src/pages/get-started/consts/DelayUseCase.const.tsx index 4bff312c356..c50a3232694 100644 --- a/apps/web/src/pages/get-started/consts/DelayUseCase.const.tsx +++ b/apps/web/src/pages/get-started/consts/DelayUseCase.const.tsx @@ -9,7 +9,7 @@ import { OnboardingUseCasesTabsEnum } from './OnboardingUseCasesTabsEnum'; const USECASE_BLUEPRINT_IDENTIFIER = 'get-started-delay'; export const DelayUseCaseConst: OnboardingUseCase = { - useCaseLink: 'https://docs.novu.co/workflows/delay-action', + useCaseLink: 'https://docs.novu.co/workflows/delay-action?utm_campaign=inapp-usecase-delay', type: OnboardingUseCasesTabsEnum.DELAY, title: 'Delay step execution', description: 'Introduces a specified time delay between workflow steps, ensuring a well-paced progression of events.', diff --git a/apps/web/src/pages/get-started/consts/DigestUseCase.const.tsx b/apps/web/src/pages/get-started/consts/DigestUseCase.const.tsx index c2aed0be20d..92ffd13cbfc 100644 --- a/apps/web/src/pages/get-started/consts/DigestUseCase.const.tsx +++ b/apps/web/src/pages/get-started/consts/DigestUseCase.const.tsx @@ -15,7 +15,7 @@ export const DigestUseCaseConst: OnboardingUseCase = { type: OnboardingUseCasesTabsEnum.DIGEST, description: 'Aggregates multiple events into a single, concise message, preventing user overload with excessive notifications.', - useCaseLink: 'https://docs.novu.co/workflows/digest', + useCaseLink: 'https://docs.novu.co/workflows/digest?utm_campaign=inapp-usecase-digest', steps: [ { title: 'Configure providers', diff --git a/apps/web/src/pages/get-started/consts/InAppUseCase.const.tsx b/apps/web/src/pages/get-started/consts/InAppUseCase.const.tsx index dcb0fcba3d7..0f3afbf2010 100644 --- a/apps/web/src/pages/get-started/consts/InAppUseCase.const.tsx +++ b/apps/web/src/pages/get-started/consts/InAppUseCase.const.tsx @@ -16,7 +16,7 @@ export const InAppUseCaseConst: OnboardingUseCase = { description: "Utilize Novu's pre-built customizable in-app component. " + 'Or opt for the headless library to create your own in-app notification center.', - useCaseLink: 'https://docs.novu.co/channels-and-providers/in-app/introduction', + useCaseLink: 'https://docs.novu.co/channels-and-providers/in-app/introduction?utm_campaign=inapp-usecase-inapp', steps: [ { title: 'Configure In-App provider', diff --git a/apps/web/src/pages/get-started/consts/MultiChannelUseCase.const.tsx b/apps/web/src/pages/get-started/consts/MultiChannelUseCase.const.tsx index 1db41a28ed7..97803d5c069 100644 --- a/apps/web/src/pages/get-started/consts/MultiChannelUseCase.const.tsx +++ b/apps/web/src/pages/get-started/consts/MultiChannelUseCase.const.tsx @@ -15,7 +15,7 @@ export const MultiChannelUseCaseConst: OnboardingUseCase = { 'Notifies subscribers using a wide range of channels: In-App, Email, Chat, Push, and SMS.\n' + '\n' + 'Configure as many providers as you like to Customize notification experience.', - useCaseLink: 'https://docs.novu.co/channels-and-providers/introduction', + useCaseLink: 'https://docs.novu.co/channels-and-providers/introduction?utm_campaign=inapp-usecase-multichannel', steps: [ { title: 'Configure providers', diff --git a/apps/web/src/pages/get-started/consts/TranslationUseCase.const.tsx b/apps/web/src/pages/get-started/consts/TranslationUseCase.const.tsx index ac9a5f6dffd..1b6f84f7387 100644 --- a/apps/web/src/pages/get-started/consts/TranslationUseCase.const.tsx +++ b/apps/web/src/pages/get-started/consts/TranslationUseCase.const.tsx @@ -11,7 +11,7 @@ export const TranslationUseCaseConst: OnboardingUseCase = { description: 'Upload translations to use them as variables or for auto-upload in the editor in a workflow. ' + 'This feature is available for business and enterprise plan.', - useCaseLink: 'https://docs.novu.co/content-creation-design/translations', + useCaseLink: 'https://docs.novu.co/content-creation-design/translations?utm_campaign=inapp-usecase-translation', steps: [ { title: 'Configure providers', diff --git a/apps/web/src/pages/integrations/components/NovuInAppForm.tsx b/apps/web/src/pages/integrations/components/NovuInAppForm.tsx index 1c8a44139ef..50a5101cac9 100644 --- a/apps/web/src/pages/integrations/components/NovuInAppForm.tsx +++ b/apps/web/src/pages/integrations/components/NovuInAppForm.tsx @@ -131,7 +131,7 @@ export const NovuInAppForm = ({ { window.open( - `https://docs.novu.co/notification-center/client/iframe${UTM_CAMPAIGN_QUERY_PARAM}#enabling-hmac-encryption` + `https://docs.novu.co/notification-center/client/iframe#enabling-hmac-encryption${UTM_CAMPAIGN_QUERY_PARAM}` ); }} /> diff --git a/packages/cli/README.MD b/packages/cli/README.MD index c474f236c8d..9e41584d32a 100644 --- a/packages/cli/README.MD +++ b/packages/cli/README.MD @@ -89,7 +89,7 @@ Using the Novu API and admin panel you can easily add real-time notification cen
notification-center-912bb96e009fb3a69bafec23bcde00b0 - Read more about how to add a notification center to your app with the Novu API [here](https://docs.novu.co/notification-center/introduction) + Read more about how to add a notification center to your app with the Novu API [here](https://docs.novu.co/notification-center/introduction?utm_campaign=inapp-cli-readme)
@@ -140,7 +140,7 @@ Novu provides a single API to manage providers across multiple channels with a s #### 📱 In-App -- [x] [Novu](https://docs.novu.co/notification-center/introduction) +- [x] [Novu](https://docs.novu.co/notification-center/introduction?utm_campaign=inapp-cli-readme) - [ ] MagicBell #### Other (Coming Soon...) diff --git a/packages/node/README.md b/packages/node/README.md index ba07fb028fa..83524b811a6 100644 --- a/packages/node/README.md +++ b/packages/node/README.md @@ -126,7 +126,7 @@ Novu provides a single API to manage providers across multiple channels with a s #### 📱 In-App -- [x] [Novu](https://docs.novu.co/notification-center/introduction) +- [x] [Novu](https://docs.novu.co/notification-center/introduction?utm_campaign=inapp-notifcationcenter-readme) - [ ] MagicBell #### Other (Coming Soon...) diff --git a/packages/notification-center-angular/projects/notification-center-angular/README.md b/packages/notification-center-angular/projects/notification-center-angular/README.md index c774fb4d400..c9eb93e1437 100644 --- a/packages/notification-center-angular/projects/notification-center-angular/README.md +++ b/packages/notification-center-angular/projects/notification-center-angular/README.md @@ -16,7 +16,7 @@ This library contains a wrapper for the Novu Notification Center web component, ## 📖 Client Installation -For our client installation guide, visit our [Angular Client docs](https://docs.novu.co/notification-center/client/angular). +For our client installation guide, visit our [Angular Client docs](https://docs.novu.co/notification-center/client/angular?utm_campaign=github-nc-readme). ## 🏃‍♂️ Quickstart diff --git a/packages/stateless/README.md b/packages/stateless/README.md index 5aa98cf7972..091c367a0c2 100644 --- a/packages/stateless/README.md +++ b/packages/stateless/README.md @@ -99,7 +99,7 @@ Novu provides a single API to manage providers across multiple channels with a s #### 📱 In-App -- [x] [Novu](https://docs.novu.co/notification-center/introduction) +- [x] [Novu](https://docs.novu.co/notification-center/introduction?utm_source=github-stateless-readme) - [ ] MagicBell #### Other (Coming Soon...) From 75851b032e93b224d0af64f720c6478b84274866 Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Mon, 11 Mar 2024 08:27:46 -0400 Subject: [PATCH 02/14] Update apps/api/src/app/shared/framework/swagger/swagger.controller.ts Co-authored-by: Richard Fontein <32132657+rifont@users.noreply.github.com> --- apps/api/src/app/shared/framework/swagger/swagger.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts index 2282f091f1c..76219db2297 100644 --- a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts +++ b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts @@ -21,7 +21,7 @@ const options = new DocumentBuilder() .addTag( 'Events', `Events represent a change in state of a subscriber. They are used to trigger workflows, and enable you to send notifications to subscribers based on their actions.`, - { url: 'https://docs.novu.co/workflows?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/workflows' } ) .addTag( 'Subscribers', From 9f680e85cdac01040f5eeb662f60de339e93f595 Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Mon, 11 Mar 2024 08:29:09 -0400 Subject: [PATCH 03/14] Update apps/web/cypress/tests/digest-playground.spec.ts Co-authored-by: Richard Fontein <32132657+rifont@users.noreply.github.com> --- apps/web/cypress/tests/digest-playground.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/cypress/tests/digest-playground.spec.ts b/apps/web/cypress/tests/digest-playground.spec.ts index c532b64523c..88fae2c7852 100644 --- a/apps/web/cypress/tests/digest-playground.spec.ts +++ b/apps/web/cypress/tests/digest-playground.spec.ts @@ -16,7 +16,7 @@ describe('Digest Playground Workflow Page', function () { cy.url().should('include', '/digest-playground'); cy.contains('Digest Workflow Playground'); - cy.get('a[href="https://docs.novu.co/workflows/digest?utm_campaign=inapp-digest"]').contains('Learn more in docs'); + cy.get('a[href^="https://docs.novu.co/workflows/digest"]').contains('Learn more in docs'); }); it('the set up digest workflow should redirect to template edit page', function () { From 6e18819fc568c41594c88b13206370fb0adcedc5 Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Mon, 11 Mar 2024 08:29:22 -0400 Subject: [PATCH 04/14] Update apps/web/cypress/tests/integrations-list-page.spec.ts Co-authored-by: Richard Fontein <32132657+rifont@users.noreply.github.com> --- apps/web/cypress/tests/integrations-list-page.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/cypress/tests/integrations-list-page.spec.ts b/apps/web/cypress/tests/integrations-list-page.spec.ts index 7cbe9c0126a..17cc177e9bb 100644 --- a/apps/web/cypress/tests/integrations-list-page.spec.ts +++ b/apps/web/cypress/tests/integrations-list-page.spec.ts @@ -924,7 +924,7 @@ describe('Integrations List Page', function () { 'Select a framework to set up credentials to start sending notifications.' ); cy.getByTestId('update-provider-sidebar') - .find('a[href="https://docs.novu.co/notification-center/introduction?utm_campaign=inapp-integrations-list"]') + .find('a[href=^"https://docs.novu.co/notification-center/introduction"]') .contains('Explore set-up guide'); cy.getByTestId('is_active_id').should('have.value', 'true'); cy.window().then((win) => { From b536251aa6e8a812ec3906c93606f6334daaa09f Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Mon, 11 Mar 2024 08:31:01 -0400 Subject: [PATCH 05/14] Update apps/web/cypress/tests/integrations-list-modal.spec.ts Co-authored-by: Richard Fontein <32132657+rifont@users.noreply.github.com> --- apps/web/cypress/tests/integrations-list-modal.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/cypress/tests/integrations-list-modal.spec.ts b/apps/web/cypress/tests/integrations-list-modal.spec.ts index fd52bfc8b49..b640259ffc9 100644 --- a/apps/web/cypress/tests/integrations-list-modal.spec.ts +++ b/apps/web/cypress/tests/integrations-list-modal.spec.ts @@ -773,7 +773,7 @@ describe('Integrations List Modal', function () { 'Select a framework to set up credentials to start sending notifications.' ); cy.getByTestId('update-provider-sidebar') - .find('a[href="https://docs.novu.co/notification-center/introduction?utm_campaign=inapp-integrations-modal"]') + .find('a[href=^"https://docs.novu.co/notification-center/introduction"]') .contains('Explore set-up guide'); cy.getByTestId('is_active_id').should('have.value', 'true'); cy.window().then((win) => { From daf0b0418ef4617a4e17ee678a6d67ad59c5cb3a Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Mon, 11 Mar 2024 08:31:12 -0400 Subject: [PATCH 06/14] Update apps/api/src/app/shared/framework/idempotency.interceptor.ts Co-authored-by: Richard Fontein <32132657+rifont@users.noreply.github.com> --- apps/api/src/app/shared/framework/idempotency.interceptor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/app/shared/framework/idempotency.interceptor.ts b/apps/api/src/app/shared/framework/idempotency.interceptor.ts index c731ffba18e..7331fc7282d 100644 --- a/apps/api/src/app/shared/framework/idempotency.interceptor.ts +++ b/apps/api/src/app/shared/framework/idempotency.interceptor.ts @@ -28,7 +28,7 @@ enum ReqStatusEnum { ERROR = 'error', } -export const DOCS_LINK = 'https://docs.novu.co/additional-resources/idempotency?utm_campaign=inapp-interceptor'; +export const DOCS_LINK = 'https://docs.novu.co/additional-resources/idempotency'; export const ALLOWED_AUTH_SCHEMES = [ApiAuthSchemeEnum.API_KEY]; const ALLOWED_METHODS = ['post', 'patch']; From 1704017f228553ded5974c62b0d997bddd6ba820 Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Mon, 11 Mar 2024 08:41:59 -0400 Subject: [PATCH 07/14] Update .cspell.json Added unknown words --- .cspell.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.cspell.json b/.cspell.json index 67fcbc3b690..b7b066083cc 100644 --- a/.cspell.json +++ b/.cspell.json @@ -567,6 +567,9 @@ "upserted", "upstash", "Upstash", + "usecase", + "USECASE", + "Vonage", "Krakend", "ratelimit", "Ratelimit", From defea180a220cf3cafe67b6df2cb2ec2c0c45668 Mon Sep 17 00:00:00 2001 From: ainouzgali Date: Wed, 13 Mar 2024 12:39:15 +0200 Subject: [PATCH 08/14] fix: apply prettier --- .../src/app/shared/framework/swagger/swagger.controller.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts index 76219db2297..54f092f9be8 100644 --- a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts +++ b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts @@ -61,7 +61,9 @@ const options = new DocumentBuilder() .addTag( 'Changes', `Changes represent a change in state of an environment. They are analagous to a pending pull request in git, enabling you to test changes before they are applied to your environment and atomically apply them when you are ready.`, - { url: 'https://docs.novu.co/platform/environments#promoting-pending-changes-to-production?utm_campaign=inapp-swagger' } + { + url: 'https://docs.novu.co/platform/environments#promoting-pending-changes-to-production?utm_campaign=inapp-swagger', + } ) .addTag( 'Environments', From 565112f2d222dcc2449d45427d765aa702a0c0a3 Mon Sep 17 00:00:00 2001 From: ainouzgali Date: Wed, 13 Mar 2024 13:21:14 +0200 Subject: [PATCH 09/14] fix: tests wrong order of ^= --- apps/web/cypress/tests/integrations-list-modal.spec.ts | 2 +- apps/web/cypress/tests/integrations-list-page.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/cypress/tests/integrations-list-modal.spec.ts b/apps/web/cypress/tests/integrations-list-modal.spec.ts index b640259ffc9..ccd963585a3 100644 --- a/apps/web/cypress/tests/integrations-list-modal.spec.ts +++ b/apps/web/cypress/tests/integrations-list-modal.spec.ts @@ -773,7 +773,7 @@ describe('Integrations List Modal', function () { 'Select a framework to set up credentials to start sending notifications.' ); cy.getByTestId('update-provider-sidebar') - .find('a[href=^"https://docs.novu.co/notification-center/introduction"]') + .find('a[href^="https://docs.novu.co/notification-center/introduction"]') .contains('Explore set-up guide'); cy.getByTestId('is_active_id').should('have.value', 'true'); cy.window().then((win) => { diff --git a/apps/web/cypress/tests/integrations-list-page.spec.ts b/apps/web/cypress/tests/integrations-list-page.spec.ts index 17cc177e9bb..f3b0d339912 100644 --- a/apps/web/cypress/tests/integrations-list-page.spec.ts +++ b/apps/web/cypress/tests/integrations-list-page.spec.ts @@ -924,7 +924,7 @@ describe('Integrations List Page', function () { 'Select a framework to set up credentials to start sending notifications.' ); cy.getByTestId('update-provider-sidebar') - .find('a[href=^"https://docs.novu.co/notification-center/introduction"]') + .find('a[href^="https://docs.novu.co/notification-center/introduction"]') .contains('Explore set-up guide'); cy.getByTestId('is_active_id').should('have.value', 'true'); cy.window().then((win) => { From 744e6e3348b4010191611438c52c78f83fcb718a Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Wed, 13 Mar 2024 12:05:28 -0400 Subject: [PATCH 10/14] Update packages/node/README.md Co-authored-by: Richard Fontein <32132657+rifont@users.noreply.github.com> --- packages/node/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node/README.md b/packages/node/README.md index 83524b811a6..000ee5ab8ee 100644 --- a/packages/node/README.md +++ b/packages/node/README.md @@ -126,7 +126,7 @@ Novu provides a single API to manage providers across multiple channels with a s #### 📱 In-App -- [x] [Novu](https://docs.novu.co/notification-center/introduction?utm_campaign=inapp-notifcationcenter-readme) +- [x] [Novu](https://docs.novu.co/notification-center/introduction?utm_campaign=node-sdk-readme) - [ ] MagicBell #### Other (Coming Soon...) From 174b476518e805553035ed829050a5666810b804 Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Wed, 13 Mar 2024 12:06:44 -0400 Subject: [PATCH 11/14] Update packages/notification-center-angular/projects/notification-center-angular/README.md Co-authored-by: Richard Fontein <32132657+rifont@users.noreply.github.com> --- .../projects/notification-center-angular/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/notification-center-angular/projects/notification-center-angular/README.md b/packages/notification-center-angular/projects/notification-center-angular/README.md index c9eb93e1437..78770371ac7 100644 --- a/packages/notification-center-angular/projects/notification-center-angular/README.md +++ b/packages/notification-center-angular/projects/notification-center-angular/README.md @@ -16,7 +16,7 @@ This library contains a wrapper for the Novu Notification Center web component, ## 📖 Client Installation -For our client installation guide, visit our [Angular Client docs](https://docs.novu.co/notification-center/client/angular?utm_campaign=github-nc-readme). +For our client installation guide, visit our [Angular Client docs](https://docs.novu.co/notification-center/client/angular?utm_campaign=github-notificationcenter-angular-readme). ## 🏃‍♂️ Quickstart From 18194b1d6d1046d9b566e4eb8fcacf3f60d382d8 Mon Sep 17 00:00:00 2001 From: Justin Nemmers Date: Wed, 13 Mar 2024 12:11:37 -0400 Subject: [PATCH 12/14] Update swagger.controller.ts Reverted --- .../framework/swagger/swagger.controller.ts | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts index 54f092f9be8..d030a1c4789 100644 --- a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts +++ b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts @@ -26,32 +26,32 @@ const options = new DocumentBuilder() .addTag( 'Subscribers', `A subscriber in Novu represents someone who should receive a message. A subscriber’s profile information contains important attributes about the subscriber that will be used in messages (name, email). The subscriber object can contain other key-value pairs that can be used to further personalize your messages.`, - { url: 'https://docs.novu.co/subscribers/subscribers?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/subscribers/subscribers' } ) .addTag( 'Topics', `Topics are a way to group subscribers together so that they can be notified of events at once. A topic is identified by a custom key. This can be helpful for things like sending out marketing emails or notifying users of new features. Topics can also be used to send notifications to the subscribers who have been grouped together based on their interests, location, activities and much more.`, - { url: 'https://docs.novu.co/subscribers/topics?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/subscribers/topics' } ) .addTag( 'Notification', 'A notification conveys information from source to recipient, triggered by a workflow acting as a message blueprint. Notifications can be individual or bundled as digest for user-friendliness.', - { url: 'https://docs.novu.co/getting-started/introduction?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/getting-started/introduction' } ) .addTag( 'Integrations', `With the help of the Integration Store, you can easily integrate your favorite delivery provider. During the runtime of the API, the Integrations Store is responsible for storing the configurations of all the providers.`, - { url: 'https://docs.novu.co/channels-and-providers/integration-store?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/channels-and-providers/integration-store' } ) .addTag( 'Layouts', `Novu allows the creation of layouts - a specific HTML design or structure to wrap content of email notifications. Layouts can be manipulated and assigned to new or existing workflows within the Novu platform, allowing users to create, manage, and assign these layouts to workflows, so they can be reused to structure the appearance of notifications sent through the platform.`, - { url: 'https://docs.novu.co/content-creation-design/layouts?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/content-creation-design/layouts' } ) .addTag( 'Workflows', `All notifications are sent via a workflow. Each workflow acts as a container for the logic and blueprint that are associated with a type of notification in your system.`, - { url: 'https://docs.novu.co/workflows?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/workflows' } ) .addTag( 'Notification Templates', @@ -62,43 +62,43 @@ const options = new DocumentBuilder() 'Changes', `Changes represent a change in state of an environment. They are analagous to a pending pull request in git, enabling you to test changes before they are applied to your environment and atomically apply them when you are ready.`, { - url: 'https://docs.novu.co/platform/environments#promoting-pending-changes-to-production?utm_campaign=inapp-swagger', + url: 'https://docs.novu.co/platform/environments#promoting-pending-changes-to-production', } ) .addTag( 'Environments', `Novu uses the concept of environments to ensure logical separation of your data and configuration. This means that subscribers, and preferences created in one environment are never accessible to another.`, - { url: 'https://docs.novu.co/platform/environments?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/platform/environments' } ) .addTag( 'Inbound Parse', `Inbound Webhook is a feature that allows processing of incoming emails for a domain or subdomain. The feature parses the contents of the email and POSTs the information to a specified URL in a multipart/form-data format.`, - { url: 'https://docs.novu.co/platform/inbound-parse-webhook?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/platform/inbound-parse-webhook' } ) .addTag( 'Feeds', `Novu provides a notification activity feed that monitors every outgoing message associated with its relevant metadata. This can be used to monitor activity and discover potential issues with a specific provider or a channel type.`, - { url: 'https://docs.novu.co/activity-feed?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/activity-feed' } ) .addTag( 'Tenants', `A tenant represents a group of users. As a developer, when your apps have organizations, they are referred to as tenants. Tenants in Novu provides the ability to tailor specific notification experiences to users of different groups or organizations.`, - { url: 'https://docs.novu.co/tenants?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/tenants' } ) .addTag( 'Messages', `A message in Novu represents a notification delivered to a recipient on a particular channel. Messages contain information about the request that triggered its delivery, a view of the data sent to the recipient, and a timeline of its lifecycle events. Learn more about messages.`, - { url: 'https://docs.novu.co/workflows/messages?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/workflows/messages' } ) .addTag( 'Organizations', `An organization serves as a separate entity within your Novu account. Each organization you create has its own separate integration store, workflows, subscribers, and API keys. This separation of resources allows you to manage multi-tenant environments and separate domains within a single account.`, - { url: 'https://docs.novu.co/platform/organizations?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/platform/organizations' } ) .addTag( 'Execution Details', `Execution details are used to track the execution of a workflow. They provided detailed information on the execution of a workflow, including the status of each step, the input and output of each step, and the overall status of the execution.`, - { url: 'https://docs.novu.co/activity-feeds?utm_campaign=inapp-swagger' } + { url: 'https://docs.novu.co/activity-feeds' } ) .build(); From c268c63d293e528d5a1be40293818b38df2066f6 Mon Sep 17 00:00:00 2001 From: Richard Fontein <32132657+rifont@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:17:47 +0000 Subject: [PATCH 13/14] Update apps/api/src/app/shared/framework/swagger/swagger.controller.ts --- apps/api/src/app/shared/framework/swagger/swagger.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts index d030a1c4789..2b5bce541ca 100644 --- a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts +++ b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts @@ -98,7 +98,7 @@ const options = new DocumentBuilder() .addTag( 'Execution Details', `Execution details are used to track the execution of a workflow. They provided detailed information on the execution of a workflow, including the status of each step, the input and output of each step, and the overall status of the execution.`, - { url: 'https://docs.novu.co/activity-feeds' } + { url: 'https://docs.novu.co/activity-feed' } ) .build(); From 2bfdb5d54d7343dbe8ec92f645481dbe90ab4475 Mon Sep 17 00:00:00 2001 From: Richard Fontein <32132657+rifont@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:17:52 +0000 Subject: [PATCH 14/14] Update apps/api/src/app/shared/framework/swagger/swagger.controller.ts --- .../src/app/shared/framework/swagger/swagger.controller.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts index 2b5bce541ca..f9a710ab3da 100644 --- a/apps/api/src/app/shared/framework/swagger/swagger.controller.ts +++ b/apps/api/src/app/shared/framework/swagger/swagger.controller.ts @@ -61,9 +61,7 @@ const options = new DocumentBuilder() .addTag( 'Changes', `Changes represent a change in state of an environment. They are analagous to a pending pull request in git, enabling you to test changes before they are applied to your environment and atomically apply them when you are ready.`, - { - url: 'https://docs.novu.co/platform/environments#promoting-pending-changes-to-production', - } + { url: 'https://docs.novu.co/platform/environments#promoting-pending-changes-to-production' } ) .addTag( 'Environments',