-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Codeqr new actions #17060
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
michelle0927
merged 12 commits into
PipedreamHQ:master
from
deusdete:codeqr-new-actions
Jun 13, 2025
Merged
Codeqr new actions #17060
Changes from 3 commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
6201fa0
Implement CodeQR API integration with actions for link and QR code ma…
deusdete bab0c98
Add dependencies for amazon_redshift and codeqr components
deusdete 4e2289f
updates
michelle0927 7eaf022
Merge remote-tracking branch 'upstream/master' into codeqr-new-actions
michelle0927 2be46a9
pnpm-lock.yaml
michelle0927 a5c3be6
pnpm-lock.yaml
michelle0927 440b7b0
chore: update version numbers and remove unused props in Create a Cod…
deusdete 88ef69f
feat: update Create a QR Code action with new properties and version …
deusdete c0a4ad9
chore: bump version to 0.1.2 in package.json
deusdete d678eab
updates
michelle0927 12ac059
feat: remove tagNames property from Create Link action
deusdete f06c69e
Merge branch 'master' into codeqr-new-actions
vunguyenhung File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| # Overview | ||
|
|
||
| The CodeQR API enables you to create and manage dynamic QR Codes, shorten URLs, capture leads, and track engagement through powerful analytics. By integrating CodeQR with Pipedream, you can automate the generation of QR Codes and short links across a wide range of workflows — from marketing automation to customer support — and seamlessly connect these actions to over 2,500 apps. fileciteturn3file0 | ||
|
|
||
| # Example Use Cases | ||
|
|
||
| - **Dynamic QR Code Generation for Marketing Campaigns** | ||
| Automatically generate campaign-specific QR Codes when a new campaign is launched in your CRM or marketing tool. Store the QR code image in your cloud drive (e.g., Google Drive or Dropbox), and attach it to your newsletters or printed materials. | ||
|
|
||
| - **URL Shortening with Pre-Redirect Lead Capture** | ||
| When a new record is added to Airtable or a Google Sheet with a destination URL, create a short link using CodeQR that optionally includes a lead capture page before redirection. Use this to qualify traffic before they reach your landing page. | ||
|
|
||
| - **Automated Feedback Collection** | ||
| Trigger the creation of a QR code linked to a feedback form after each customer interaction in platforms like Zendesk, Intercom, or HubSpot. Easily track which customers scanned the code and filled the form, and centralize the responses. | ||
|
|
||
| - **Analytics Monitoring and Reporting** | ||
| Use Pipedream workflows to pull scan and click analytics from CodeQR at regular intervals. Send the data to Slack, update a Google Sheet, or visualize trends on a custom dashboard. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,239 @@ | ||
| import codeqr from "../../codeqr.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "codeqr-create-link", | ||
| name: "Create a CodeQR Link", | ||
| description: | ||
| "Creates a short link in CodeQR using the CodeQR API. [See the documentation](https://codeqr.mintlify.app/api-reference/endpoint/create-a-link)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| props: { | ||
| codeqr, | ||
| url: { | ||
| type: "string", | ||
| label: "URL", | ||
| description: "The destination URL of the short link.", | ||
| }, | ||
| key: { | ||
| type: "string", | ||
| label: "Key", | ||
| description: | ||
| "The short link slug. If not provided, a random 7-character slug will be generated.", | ||
| optional: true, | ||
| }, | ||
| domain: { | ||
| type: "string", | ||
| label: "Domain", | ||
| description: | ||
| "The domain of the short link. If not provided, the default workspace domain will be used.", | ||
| optional: true, | ||
| }, | ||
| externalId: { | ||
| type: "string", | ||
| label: "External ID", | ||
| description: | ||
| "This is the ID of the link in your database. Must be prefixed with ext_.", | ||
| optional: true, | ||
| }, | ||
| password: { | ||
| type: "string", | ||
| label: "Password", | ||
| description: "The password required to access the destination URL.", | ||
| optional: true, | ||
| }, | ||
| flexible: { | ||
| type: "boolean", | ||
| label: "Flexible Link", | ||
| description: | ||
| "Whether this is a flexible link with dynamic destination setting.", | ||
| optional: true, | ||
| }, | ||
| title: { | ||
| type: "string", | ||
| label: "Title", | ||
| description: "The title displayed on the short link page.", | ||
| optional: true, | ||
| }, | ||
| description: { | ||
| type: "string", | ||
| label: "Description", | ||
| description: "A description displayed on the short link page.", | ||
| optional: true, | ||
| }, | ||
| image: { | ||
| type: "string", | ||
| label: "Image URL", | ||
| description: "URL of the image displayed on the short link page.", | ||
| optional: true, | ||
| }, | ||
| video: { | ||
| type: "string", | ||
| label: "Video URL", | ||
| description: "URL of the video displayed on the short link page.", | ||
| optional: true, | ||
| }, | ||
| proxy: { | ||
| type: "boolean", | ||
| label: "Proxy", | ||
| description: "Enable proxy settings.", | ||
| optional: true, | ||
| }, | ||
| preRedirection: { | ||
| type: "boolean", | ||
| label: "Pre-Redirection Page", | ||
| description: | ||
| "Enable a pre-redirection page before sending users to the destination URL.", | ||
| optional: true, | ||
| }, | ||
| pageId: { | ||
| type: "string", | ||
| label: "Page ID", | ||
| description: "ID of your page created in CodeQR.", | ||
| optional: true, | ||
| }, | ||
| pageUrl: { | ||
| type: "string", | ||
| label: "Page URL", | ||
| description: "The URL for the pre-redirect page.", | ||
| optional: true, | ||
| }, | ||
| rewrite: { | ||
| type: "boolean", | ||
| label: "Rewrite Link", | ||
| description: "Enable link rewriting.", | ||
| optional: true, | ||
| }, | ||
| ios: { | ||
| type: "string", | ||
| label: "iOS URL", | ||
| description: "The iOS destination URL for device-specific redirection.", | ||
| optional: true, | ||
| }, | ||
| android: { | ||
| type: "string", | ||
| label: "Android URL", | ||
| description: | ||
| "The Android destination URL for device-specific redirection.", | ||
| optional: true, | ||
| }, | ||
| doIndex: { | ||
| type: "boolean", | ||
| label: "Allow Indexing", | ||
| description: "Enable indexing of the short link.", | ||
| optional: true, | ||
| }, | ||
| comments: { | ||
| type: "string", | ||
| label: "Comments", | ||
| description: "Comments or notes about the short link.", | ||
| optional: true, | ||
| }, | ||
| expiresAt: { | ||
| type: "string", | ||
| label: "Expiration Date", | ||
| description: | ||
| "The date and time when the short link will expire (ISO 8601).", | ||
| optional: true, | ||
| }, | ||
| expiredUrl: { | ||
| type: "string", | ||
| label: "Expired Redirect URL", | ||
| description: "The URL to redirect to when the short link has expired.", | ||
| optional: true, | ||
| }, | ||
| geo: { | ||
| type: "object", | ||
| label: "Geo-Targeting", | ||
| description: | ||
| "Mapping of country codes to destination URLs (JSON format).", | ||
| optional: true, | ||
| }, | ||
| publicStats: { | ||
| type: "boolean", | ||
| label: "Public Stats", | ||
| description: "Whether the short link's stats are publicly accessible.", | ||
| optional: true, | ||
| }, | ||
| tagIds: { | ||
| type: "string[]", | ||
| label: "Tag IDs", | ||
| description: "Array of tag IDs to apply to the short link.", | ||
| optional: true, | ||
| }, | ||
| tagNames: { | ||
| type: "string[]", | ||
| label: "Tag Names", | ||
| description: "Array of tag names to apply to the short link.", | ||
| optional: true, | ||
| }, | ||
| }, | ||
|
|
||
| async run({ $ }) { | ||
| const { | ||
| url, | ||
| key, | ||
| domain, | ||
| externalId, | ||
| password, | ||
| flexible, | ||
| title, | ||
| description, | ||
| image, | ||
| video, | ||
| proxy, | ||
| preRedirection, | ||
| pageId, | ||
| pageUrl, | ||
| rewrite, | ||
| ios, | ||
| android, | ||
| doIndex, | ||
| comments, | ||
| expiresAt, | ||
| expiredUrl, | ||
| publicStats, | ||
| tagIds, | ||
| tagNames, | ||
| } = this; | ||
|
|
||
| const geo = typeof this.geo === "string" | ||
| ? JSON.parse(this.geo) | ||
| : this.geo; | ||
|
|
||
michelle0927 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| const payload = { | ||
| url, | ||
| }; | ||
| key && (payload.key = key); | ||
| domain && (payload.domain = domain); | ||
| externalId && (payload.externalId = externalId); | ||
| password && (payload.password = password); | ||
| flexible != null && (payload.flexible = flexible); | ||
| title && (payload.title = title); | ||
| description && (payload.description = description); | ||
| image && (payload.image = image); | ||
| video && (payload.video = video); | ||
| proxy != null && (payload.proxy = proxy); | ||
| preRedirection != null && (payload.preRedirection = preRedirection); | ||
| pageId && (payload.pageId = pageId); | ||
| pageUrl && (payload.pageUrl = pageUrl); | ||
| rewrite != null && (payload.rewrite = rewrite); | ||
| ios && (payload.ios = ios); | ||
| android && (payload.android = android); | ||
| doIndex != null && (payload.doIndex = doIndex); | ||
| comments && (payload.comments = comments); | ||
| expiresAt && (payload.expiresAt = expiresAt); | ||
| expiredUrl && (payload.expiredUrl = expiredUrl); | ||
| geo && (payload.geo = geo); | ||
| publicStats != null && (payload.publicStats = publicStats); | ||
|
|
||
| if (tagIds?.length) payload.tagIds = tagIds; | ||
| if (tagNames?.length) payload.tagNames = tagNames; | ||
|
|
||
| const response = await this.codeqr.createLink({ | ||
| $, | ||
| data: payload, | ||
| }); | ||
| response && $.export("$summary", "Link created successfully"); | ||
| return response; | ||
michelle0927 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| }, | ||
| }; | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.