Skip to content

Conversation

@michelle0927
Copy link
Collaborator

@michelle0927 michelle0927 commented Nov 6, 2025

Resolves #18961

Summary by CodeRabbit

  • New Features

    • Added a "Generate Keyword Ideas" action for Google Ads and a corresponding client method to request keyword ideas.
  • Chores

    • Bumped package version and updated version metadata for multiple Google Ads actions and sources.

@vercel
Copy link

vercel bot commented Nov 6, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
pipedream-docs Ignored Ignored Nov 6, 2025 6:55pm
pipedream-docs-redirect-do-not-edit Ignored Ignored Nov 6, 2025 6:55pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 6, 2025

Walkthrough

Adds a new Google Ads "Generate Keyword Ideas" action and app client method, updates package version, and increments version metadata on several existing actions and sources. No other behavioral changes detected.

Changes

Cohort / File(s) Summary
New Action: Generate Keyword Ideas
components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs
New action module exporting metadata, props (includes additionalFields), and an async run that calls the app client's generateKeywordIdeas and returns the API response.
App Client: new method
components/google_ads/google_ads.app.mjs
Adds generateKeywordIdeas(opts = {}) which issues a POST to /v22/customers/{customerClientId}:generateKeywordIdeas via existing _makeRequest.
Version bumps: actions
components/google_ads/actions/add-contact-to-list-by-email/add-contact-to-list-by-email.mjs, components/google_ads/actions/create-customer-list/create-customer-list.mjs, components/google_ads/actions/create-report/create-report.mjs, components/google_ads/actions/send-offline-conversion/send-offline-conversion.mjs
Incremented exported version fields only (no logic changes).
Package and sources version bumps
components/google_ads/package.json, components/google_ads/sources/new-campaign-created/new-campaign-created.mjs, components/google_ads/sources/new-lead-form-entry/new-lead-form-entry.mjs
Package version bumped to 0.4.0; two source modules' exported version fields incremented.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Action as Generate Keyword Ideas Action
    participant App as Google Ads App Client
    participant API as Google Ads API

    User->>Action: invoke action (accountId, customerClientId, additionalFields)
    Action->>Action: parse additionalFields
    Action->>App: generateKeywordIdeas({ customerClientId, data })
    App->>API: POST /v22/customers/{customerClientId}:generateKeywordIdeas
    API-->>App: response (keyword ideas)
    App-->>Action: return response
    Action->>User: export summary and return API response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Review focus:
    • generate-keyword-ideas action: validate props (especially additionalFields parsing) and summary/export behavior.
    • google_ads.app.mjs: verify request construction, path templating, and option propagation to _makeRequest.
    • Ensure package and version bumps are consistent with release policy.

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The PR title directly matches the primary change: adding a new Google Ads action for generating keyword ideas.
Description check ✅ Passed The PR description is minimal but sufficient, referencing the linked issue that contains the full context and requirements.
Linked Issues check ✅ Passed All coding requirements from issue #18961 are met: generateKeywordIdeas method added to Google Ads app, new action module created with proper metadata and API integration.
Out of Scope Changes check ✅ Passed All changes are scoped to implementing the GenerateKeywordIdeas action and necessary version updates; no unrelated modifications detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch issue-18961

Comment @coderabbitai help to get the list of available commands and usage tips.

@michelle0927 michelle0927 marked this pull request as ready for review November 6, 2025 18:45
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between aebf7b0 and 785a0c4.

📒 Files selected for processing (9)
  • components/google_ads/actions/add-contact-to-list-by-email/add-contact-to-list-by-email.mjs (1 hunks)
  • components/google_ads/actions/create-customer-list/create-customer-list.mjs (1 hunks)
  • components/google_ads/actions/create-report/create-report.mjs (1 hunks)
  • components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs (1 hunks)
  • components/google_ads/actions/send-offline-conversion/send-offline-conversion.mjs (1 hunks)
  • components/google_ads/google_ads.app.mjs (1 hunks)
  • components/google_ads/package.json (1 hunks)
  • components/google_ads/sources/new-campaign-created/new-campaign-created.mjs (1 hunks)
  • components/google_ads/sources/new-lead-form-entry/new-lead-form-entry.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-10-20T01:01:02.970Z
Learnt from: js07
Repo: PipedreamHQ/pipedream PR: 18744
File: components/slack_v2/actions/send-large-message/send-large-message.mjs:49-64
Timestamp: 2025-10-20T01:01:02.970Z
Learning: In components/slack_v2/actions/send-large-message/send-large-message.mjs, the metadata_event_payload prop is typed as string, so the code only needs to handle string-to-JSON parsing and does not need to handle object inputs.

Applied to files:

  • components/google_ads/actions/send-offline-conversion/send-offline-conversion.mjs
🧬 Code graph analysis (1)
components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs (1)
components/google_ads/google_ads.app.mjs (8)
  • response (20-23)
  • response (39-39)
  • response (55-58)
  • response (78-81)
  • response (123-130)
  • response (134-136)
  • response (153-157)
  • response (218-222)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (14)
components/google_ads/actions/create-report/create-report.mjs (1)

22-22: LGTM - Routine version bump.

The patch version increment is appropriate as there are no functional changes to this module.

components/google_ads/package.json (1)

3-3: LGTM - Appropriate minor version bump.

The minor version increment from 0.3.3 to 0.4.0 is appropriate for adding new functionality (Generate Keyword Ideas feature) while maintaining backward compatibility.

components/google_ads/actions/send-offline-conversion/send-offline-conversion.mjs (1)

11-11: LGTM - Routine version bump.

The patch version increment is appropriate as there are no functional changes to this module.

components/google_ads/actions/create-customer-list/create-customer-list.mjs (1)

18-18: LGTM - Routine version bump.

The patch version increment is appropriate as there are no functional changes to this module.

components/google_ads/sources/new-campaign-created/new-campaign-created.mjs (1)

10-10: LGTM - Routine version bump.

The patch version increment is appropriate as there are no functional changes to this module.

components/google_ads/sources/new-lead-form-entry/new-lead-form-entry.mjs (1)

11-11: LGTM - Routine version bump.

The patch version increment is appropriate as there are no functional changes to this module.

components/google_ads/actions/add-contact-to-list-by-email/add-contact-to-list-by-email.mjs (1)

10-10: LGTM - Routine version bump.

The patch version increment is appropriate as there are no functional changes to this module.

components/google_ads/google_ads.app.mjs (2)

250-256: File exists—review comment concern is unfounded.

The action file components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs already exists in the repository at the expected location. The generateKeywordIdeas method implementation follows the established pattern correctly. No action required.

Likely an incorrect or invalid review comment.


250-256: Verify if v22 is intentional for GenerateKeywordIdeas—the endpoint is available in v21.

GenerateKeywordIdeas is available in both v21 and v22 API versions, so the v22 path used here breaks consistency with the v21 endpoints used throughout the rest of the file. Please confirm whether this is intentional or should be updated to v21 for consistency.

components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs (5)

8-18: LGTM!

The action metadata is correctly configured for a read-only keyword research operation. The annotations appropriately indicate this is a non-destructive, read-only action.


19-22: LGTM!

The props structure follows the established pattern in the codebase by using shared common props and dynamically generated additional fields.


33-34: LGTM!

The success message and response handling are appropriate for this action.


6-6: No issues found—API version is correct.

The v22 API reference in the docLink is intentional. The generateKeywordIdeas method in google_ads.app.mjs uses the v22 endpoint (/v22/customers/{customerClientId}:generateKeywordIdeas), while all other methods use v21. This version difference appears deliberate, suggesting this endpoint is a newer feature only available in v22.


25-32: Method verification complete — no issues found.

The generateKeywordIdeas method is properly implemented in components/google_ads/google_ads.app.mjs at line 250. It correctly passes all parameters through _makeRequest, which properly handles path substitution, header construction, and axios invocation. The method signature and parameter chain align correctly with the action's call site.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 785a0c4 and bf93b65.

📒 Files selected for processing (1)
  • components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (4)
components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs (4)

1-6: LGTM!

The imports and documentation link are correctly configured for this action.


8-18: LGTM!

The action metadata and annotations are correctly configured. The readOnlyHint: true and destructiveHint: false accurately reflect that this is a read-only operation for generating keyword ideas.


24-24: Note: Double parsing previously flagged.

The double parsing pattern on this line was already addressed in a previous review comment. Please refer to that comment for guidance on simplifying this if both parsing steps are not necessary.


33-34: LGTM!

The success message is clear and the response return is appropriate.

Copy link
Collaborator

@GTFalcao GTFalcao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ACTION] Google Ads Generate Keyword Ideas

3 participants