What are the Foundational Steps to Implement Pipedream Connect in My App from Scratch?

This topic was automatically generated from Slack. You can find the original thread here.

can you give me the foundational steps to go from zero to implementing Pipedream Connect correctly in my app?

Certainly! Here are the foundational steps to go from zero to implementing Pipedream Connect in your app: — ## 1. Understand What Pipedream Connect Is Pipedream Connect allows you to embed workflow automation and integrations directly into your own product or app, letting your users connect to thousands of APIs and automate tasks without leaving your platform. — ## 2. Review the Pipedream Connect Documentation Start by reading the Pipedream Connect API/SDK Reference to understand the available endpoints, authentication, and integration patterns. — ## 3. Set Up Your Pipedream Account and Workspace - Sign up for a Pipedream account. - Create a workspace for your app or team. — ## 4. Register Your Application - In your Pipedream workspace, register your application to obtain the necessary API credentials (client ID, secret, etc.) for Connect. - Configure redirect URIs and any required OAuth settings. — ## 5. Integrate the Connect SDK or API - Install the Connect SDK in your app, or use direct API calls. - Authenticate your app with Pipedream using the credentials from step 4. - Implement the Connect UI or API endpoints in your app to allow users to: - Browse and select integrations - Authenticate with third-party services - Configure and run workflows — ## 6. Test the Integration - Use test accounts and workflows to verify that users can connect services, trigger workflows, and see results within your app. - Handle authentication flows, error states, and webhook events as needed. — ## 7. Launch and Monitor - Roll out the feature to your users. - Monitor usage, errors, and feedback. - Iterate and improve based on user needs. — ## Additional Resources - Pipedream Connect API Reference - Pipedream Support for help and troubleshooting — If you need more detailed, step-by-step code examples or have specific questions about your stack, let me know!

whats benefit of sdk ? why should i use sdk or api

whats benefit of sdk ? why should i use sdk or api (edited)

Here’s a concise explanation of the benefits of using the Pipedream Connect SDK versus using the API directly, and why you might choose one over the other: — ## Benefits of Using the SDK - Faster Integration: The SDK provides pre-built methods and UI components, so you can add Pipedream Connect to your app with less custom code. - Handles Complexity: The SDK manages authentication flows, error handling, and event listening for you, reducing the need to handle these details manually. - Consistent Updates: The SDK is maintained by Pipedream, so you get bug fixes and new features automatically. - UI Components: Some SDKs include ready-made UI elements for connecting accounts or configuring workflows, saving you time on frontend development. - Best Practices: The SDK follows Pipedream’s recommended integration patterns, helping you avoid common mistakes. — ## Why Use the API Directly? - Maximum Flexibility: If you need a custom user experience or want to deeply control every aspect of the integration, the API gives you full control. - Non-SDK Languages: If your stack doesn’t support the SDK, you can always use the REST API. - Lightweight: If you only need a small part of the functionality, calling the API directly may be simpler. — ## When to Use Each - Use the SDK if you want to get up and running quickly, follow best practices, and don’t need a highly customized experience. - Use the API if you need full control, are working in an unsupported language, or want to build a unique integration. — In summary: The SDK makes it much easier and faster to add Pipedream Connect to your app, handling many details for you. The API gives you more flexibility and control if you need it. Choose the one that best fits your app’s needs and your development resources.

where can i find all action keys

To find all action keys in Pipedream, follow these steps: 1. Browse the Pipedream UI: - In the Pipedream workflow builder, when you add a new step and select an app, you’ll see a list of available actions for that app. - Each action has a unique key (often called the “action key” or “component key”) that identifies it. 2. Component Documentation: - Each pre-built action in Pipedream has documentation. The action key is typically part of the URL or listed in the docs. - For example, in a URL like https://pipedream.com/apps/slack/actions/send-message, the action key is send-message. 3. API / SDK Reference: - If you’re using Pipedream Connect or the API, you can list available actions and their keys programmatically. - Refer to the Pipedream Connect API documentation for endpoints that list actions and their keys. 4. Direct Lookup: - In the Pipedream UI, after selecting an app, the dropdown for actions will show the human-readable name, but you can often see the action key in the URL or in the step configuration details. Summary: - Action keys are visible in the Pipedream UI when adding steps, in the documentation URLs, and via the Connect API. - If you need a full programmatic list, use the Connect API endpoints for listing actions. If you need help finding the action key for a specific app or action, let me know which one and I can help you locate it!

should i first create flow/actions in app for connect?

No, you do not need to create flows or actions in your own app before using Pipedream Connect. Pipedream Connect is designed so you can embed integrations with hundreds of apps directly into your product, without building and maintaining those integrations yourself. You use Pipedream’s prebuilt triggers and actions, and your users can connect their accounts and automate workflows from your app. What you need to do: - Integrate the Pipedream Connect SDK or API into your app. - Configure which apps and actions you want to offer your users (using Pipedream’s prebuilt actions). - You do not need to build or host your own flows/actions unless you want custom logic that Pipedream doesn’t provide. Summary: You can use Pipedream’s existing actions and triggers out of the box with Connect. Only build your own flows/actions if you need something custom that isn’t available in Pipedream’s catalog. If you have more specific needs or want to clarify your use case, let me know!

would these endpoints be enough ? how can i retrive where to send data for example?

Endpoints To Create
Method Endpoint Purpose
POST /v1/organizations/{orgId}/integrations/connect-token Generate token for frontend OAuth popup
GET /v1/organizations/{orgId}/integrations List connected integrations
POST /v1/organizations/{orgId}/integrations Save new connection after OAuth
GET /v1/organizations/{orgId}/integrations/{id} Get single integration details
PATCH /v1/organizations/{orgId}/integrations/{id} Update config (trigger mode, segment, etc.)
DELETE /v1/organizations/{orgId}/integrations/{id} Disconnect integration
POST /v1/organizations/{orgId}/integrations/{id}/test Send test visitor data
GET /v1/integrations/apps List available apps (public)

Your proposed endpoints cover most of the core functionality needed for managing integrations with Pipedream Connect, but there are a few considerations and clarifications needed, especially regarding where to send data (i.e., how to know the destination for action calls). ### 1. Are these endpoints enough? - Yes, for basic integration management: The endpoints you listed allow you to: - Authenticate and authorize users (connect-token) - List, create, update, and delete integrations - Send test data - List available apps - But for sending data to a specific integration/action, you’ll need to know: - Which actions are available for each integration/app - The parameters required for each action - The endpoint or method to actually invoke an action (e.g., send data to Segment, Mode, etc.) ### 2. How do you know where to send data? - In Pipedream Connect, after a user connects an integration (e.g., Segment), you typically need to: 1. List available actions for that integration (e.g., “Track Event” for Segment) 2. Invoke an action by sending data to a specific endpoint (usually a Pipedream Connect endpoint, not directly to the third-party API) - Missing endpoint: You’ll likely need an endpoint like: POST /v1/organizations/{orgId}/integrations/{id}/actions/{actionKey}/invoke - This would let you send data to a specific action (e.g., send a “track” event to Segment). - The {actionKey} identifies the action (e.g., “track”, “identify”, etc.). - The request body would contain the data to send. - How to get action keys and parameters: - You’ll need to list available actions for each app/integration, which may require another endpoint: GET /v1/integrations/apps/{app}/actions - This should return the list of actions and their required parameters. ### 3. Summary of what’s missing / needed - Action invocation endpoint: To actually send data to an integration’s action. - Action discovery endpoint: To list available actions and their parameters for each app/integration. ### 4. Example flow 1. User connects Segment via OAuth. 2. Your backend receives and stores the integration. 3. You list available actions for Segment (e.g., “track”, “identify”). 4. When you want to send data (e.g., a “track” event), you call: ```
POST /v1/organizations/{orgId}/integrations/{id}/actions/track/invoke

I can see the error - the Pipedream add-single-row action is still failing with Cannot read properties of undefined (reading 'map'). The error is happening in the action’s code at line 154. This suggests that the myColumnData format isn’t correct for this action. Let me search Pipedream’s documentation for the correct format

It looks like you’re encountering the error Cannot read properties of undefined (reading 'map') when using the Pipedream add-single-row action. This error typically means that the code is trying to call .map() on something that is undefined, which often happens if the input data (in your case, myColumnData) is not in the expected format. ### What format does myColumnData need? While the exact documentation for add-single-row isn’t included above, based on standard patterns for Google Sheets and similar actions on Pipedream, the input for adding a single row is usually: - An array of values (in the order of the columns in your sheet), or - An object where the keys are column names and the values are the cell values for that row. #### Example 1: Array of values on ["value1", "value2", "value3"] #### Example 2: Object with column names on { "Name": "Alice", "Email": "[alice@example.com](mailto:alice@example.com)", "Age": 30 } ### Why does the error happen? If you pass undefined, null, or a value that isn’t an array or object, the action’s code will fail when it tries to iterate over it with .map(). ### How to fix - Check your input: Make sure myColumnData is defined and is either an array or an object as shown above. - If you’re using dynamic data: Use expressions like ["${steps.previous_step.value1}", "${steps.previous_step.value2}"] or an object with the correct keys. ### Example in a Pipedream code step ```
export default defineComponent({ async run({ steps, $ }) { // Example: prepare data as an object const myColumnData = { Name: “Alice”, Email: “alice@example.com”, Age: 30, }; return myColumnData; } });

eminder check complete. Emails sent: 0
dataapi | Domain verification job finished in 868ms
dataapi | :white_check_mark: Credit sync completed in 2477ms
dataapi | :bar_chart: Stats: 87 orgs, +0 emails
dataapi | :rotating_light: Paused: 20, Unpaused: 0
dataapi | ← GET /openapi.json
dataapi | → GET /openapi.json 200 127ms
dataapi | ← OPTIONS /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test
dataapi | → OPTIONS /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test 204 2ms
dataapi | ← POST /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test
dataapi | [Integration Test] Run payload: {
dataapi | “id”: “google_sheets-add-single-row”,
dataapi | “externalUserId”: “org_57a9dbab-f764-44e4-8e13-3dced1ac16d9”,
dataapi | “configuredProps”: {
dataapi | “googleSheets”: {
dataapi | “authProvisionId”: “apn_AVhlMbe”
dataapi | },
dataapi | “drive”: “My Drive”,
dataapi | “sheetId”: “1RQcLbZmviUUj6yzwwAY8EW3MCapyZ1R_I-go_KCHJNM”,
dataapi | “worksheetId”: 0,
dataapi | “hasHeaders”: false,
dataapi | “myColumnData”: [
dataapi | “test@example.com”,
dataapi | “Test”,
dataapi | “User”,
dataapi | “Test Company Inc.”,
dataapi | “Product Manager”,
dataapi | “+14155551234”,
dataapi | “San Francisco”,
dataapi | “California”,
dataapi | “United States”,
dataapi | “”,
dataapi | “testcompany.com”,
dataapi | “”,
dataapi | “”,
dataapi | “high”,
dataapi | “5”,
dataapi | “23”,
dataapi | “2025-12-02T18:19:30.039Z”
dataapi | ]
dataapi | }
dataapi | }
dataapi | [Integration Test] Result: {
dataapi | “os”: [
dataapi | {
dataapi | “ts”: 1764699572265,
dataapi | “k”: “error”,
dataapi | “err”: {
dataapi | “name”: “Error”,
dataapi | “message”: “undefined is not an array or an array-like”,
dataapi | “stack”: “Error: undefined is not an array or an array-like\n at Object.sanitizedArray (file:///tmp/pdg/dist/code/4fbcbbea00e9f8eb912508a783f31752127af886e4eae5d22a03e24af26d139e/code/google_sheets.app.mjs:178:13)\n at Object.run (file:///tmp/pdg/dist/code/4fbcbbea00e9f8eb912508a783f31752127af886e4eae5d22a03e24af26d139e/code/actions/add-single-row/add-single-row.mjs:158:33)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async file:///var/task/component_maker.mjs:170:11\n at async captureObservations (/var/task/node_modules/@lambda-v2/component-runtime/src/captureObservations.js:28:5)\n at async run (file:///var/task/component_maker.mjs:157:20)\n at async file:///var/task/component_maker.mjs:199:11”
dataapi | }
dataapi | }
dataapi | ],
dataapi | “exports”: {},
dataapi | “t”: {
dataapi | “ar”: 1764699570950,
dataapi | “br”: 1764699570997,
dataapi | “bp”: 1764699570997,
dataapi | “bls”: 1764699570997,
dataapi | “ble”: 1764699572277
dataapi | }
dataapi | }
dataapi | [Integration Test] Pipedream error: undefined is not an array or an array-like
dataapi | → POST /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test 200 2s

It looks like you’re running an integration test for the Google Sheets - Add Single Row action and encountering this error: "message": "undefined is not an array or an array-like", "stack": "Error: undefined is not an array or an array-like\n at Object.sanitizedArray ..." ### What this error means This error typically occurs when the code expects an array (or something array-like) but receives undefined instead. In the context of adding a row to Google Sheets, this usually means that the data you are trying to add as a row is either missing or not formatted as an array. ### Key things from your payload - "myColumnData" is present and is an array of values. - "hasHeaders": false (so the first row is not treated as headers). - "worksheetId": 0 (sometimes this should be a string or the actual sheet/tab ID, not an index). ### Possible causes and solutions #### 1. Incorrect property name for row data - The action may expect a property like row or values instead of myColumnData. - Double-check the required input property name for the row data in the action/component you’re using. #### 2. Worksheet ID format - "worksheetId": 0 may not be correct. Many Google Sheets APIs expect the sheet/tab name or gid (as a string), not an index. - Try passing the actual worksheet/tab name or the gid as a string. #### 3. Missing or misnamed required fields - If the action expects a field like row, but you provide myColumnData, it will be undefined. ### What you should try #### Check the required input fields for the action - Make sure you are passing the row data in the correct property (commonly row or values). - Example (if the action expects row): on "configuredProps": { "googleSheets": { "authProvisionId": "apn_AVhlMbe" }, "drive": "My Drive", "sheetId": "1RQcLbZmviUUj6yzwwAY8EW3MCapyZ1R_I-go_KCHJNM", "worksheetId": "Sheet1", // or the actual tab name "hasHeaders": false, "row": [ "[test@example.com](mailto:test@example.com)", "Test", "User", "Test Company Inc.", "Product Manager", "+14155551234", "San Francisco", "California", "United States", "", "[testcompany.com](http://testcompany.com)", "", "", "high", "5", "23", "2025-12-02T18:19:30.039Z" ] } #### If you are using a custom component, ensure the code expects the correct prop: export default defineComponent({ props: { google_sheets: { type: "app", app: "google_sheets" }, sheetId: { type: "string", label: "Sheet ID" }, worksheetId: { type: "string", label: "Worksheet Name" }, row: { type: "string[]", label: "Row Data" }, }, async run({ steps, $ }) { // Your code to add a row using this.row }, }); ### Summary - The error is because the code expects an array but is getting undefined. - Double-check the property name for the row data (row or values instead of myColumnData). - Ensure worksheetId is the correct type (usually a string, not a number). - Review the component or action’s documentation for required input fields. If you continue to have trouble, please provide the exact component/action you’re using or visit Support - Pipedream for more help!

{
“success”: false,
“message”: “Failed to send test data”,
“error”: “undefined is not an array or an array-like”
}- GET /openapi.json
dataapi | → GET /openapi.json 200 144ms
pixel-proxy | Received request for pixel ID: ffa678d5-4c53-4201-abbe-42a9a89df804
dataapi | ← OPTIONS /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test
dataapi | → OPTIONS /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test 204 1ms
dataapi | ← POST /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test
dataapi | [Integration Test] Run payload: {
dataapi | “id”: “google_sheets-add-single-row”,
dataapi | “externalUserId”: “org_57a9dbab-f764-44e4-8e13-3dced1ac16d9”,
dataapi | “configuredProps”: {
dataapi | “googleSheets”: {
dataapi | “authProvisionId”: “apn_AVhlMbe”
dataapi | },
dataapi | “drive”: “My Drive”,
dataapi | “sheetId”: “1RQcLbZmviUUj6yzwwAY8EW3MCapyZ1R_I-go_KCHJNM”,
dataapi | “worksheetId”: “0”,
dataapi | “hasHeaders”: false,
dataapi | “row”: [
dataapi | “test@example.com”,
dataapi | “Test”,
dataapi | “User”,
dataapi | “Test Company Inc.”,
dataapi | “Product Manager”,
dataapi | “+14155551234”,
dataapi | “San Francisco”,
dataapi | “California”,
dataapi | “United States”,
dataapi | “”,
dataapi | “testcompany.com”,
dataapi | “”,
dataapi | “”,
dataapi | “high”,
dataapi | “5”,
dataapi | “23”,
dataapi | “2025-12-02T18:23:58.234Z”
dataapi | ]
dataapi | }
dataapi | }
pixel-proxy | Received request for pixel ID: ffa678d5-4c53-4201-abbe-42a9a89df804
dataapi | [Integration Test] Result: {
dataapi | “os”: [
dataapi | {
dataapi | [Integration Test] Pipedream error: undefined is not an array or an array-like
dataapi | “ts”: 1764699840505,
dataapi | “k”: “error”,
dataapi | “err”: {
dataapi | “name”: “Error”,
dataapi | “message”: “undefined is not an array or an array-like”,
dataapi | “stack”: “Error: undefined is not an array or an array-like\n at Object.sanitizedArray (file:///tmp/pdg/dist/code/4fbcbbea00e9f8eb912508a783f31752127af886e4eae5d22a03e24af26d139e/code/google_sheets.app.mjs:178:13)\n at Object.run (file:///tmp/pdg/dist/code/4fbcbbea00e9f8eb912508a783f31752127af886e4eae5d22a03e24af26d139e/code/actions/add-single-row/add-single-row.mjs:158:33)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async file:///var/task/component_maker.mjs:170:11\n at async captureObservations (/var/task/node_modules/@lambda-v2/component-runtime/src/captureObservations.js:28:5)\n at async run (file:///var/task/component_maker.mjs:157:20)\n at async file:///var/task/component_maker.mjs:199:11”
dataapi | }
dataapi | }
dataapi | ],
dataapi | “exports”: {},
dataapi | “t”: {
dataapi | “ar”: 1764699839366,
dataapi | “br”: 1764699839453,
dataapi | “bp”: 1764699839453,
dataapi | “bls”: 1764699839453,
dataapi | “ble”: 1764699840535
dataapi | }

It looks like you’re encountering the following error when trying to add a single row to Google Sheets via Pipedream: "error": "undefined is not an array or an array-like" ### What this error means This error typically occurs when a value expected to be an array is actually undefined. In the context of the Add Single Row action for Google Sheets, this usually means that the row property is either missing, set to undefined, or not formatted as an array. ### Troubleshooting steps 1. Check the row property - The row property must be an array of values, where each value corresponds to a column in your Google Sheet. - Example: on "row": [ "[test@example.com](mailto:test@example.com)", "Test", "User", "Test Company Inc.", "Product Manager" ] - In your payload, you are passing a row array, so at first glance this looks correct. 2. Check for required fields - If your sheet expects headers and you set hasHeaders: false, but your sheet actually has headers, this can cause issues. - If you set hasHeaders: true, Pipedream will map the object keys to columns. If hasHeaders: false, you must provide an array in the same order as the columns. 3. Check for empty or undefined values - If any value in the row array is undefined, it could cause this error. Make sure all values are defined (empty strings are OK, but not undefined). 4. Check the configuration of the action - Ensure that all required props (drive, sheetId, worksheetId, row) are set and valid. - Double-check that the sheetId and worksheetId correspond to an existing sheet and worksheet. 5. Check for typos or mismatches - Make sure the property is named exactly row and not, for example, rows or something else. ### Example of a correct configuration Here’s how the step should look in a Pipedream component: import { axios } from "@pipedream/platform"; export default defineComponent({ props: { google_sheets: { type: "app", app: "google_sheets", }, sheetId: { type: "string", label: "Sheet ID", }, worksheetId: { type: "string", label: "Worksheet ID", }, row: { type: "string[]", label: "Row Values", description: "Array of values to add as a row", }, hasHeaders: { type: "boolean", label: "Sheet has headers?", optional: true, }, }, async run({ steps, $ }) { // Example API call to add a row (actual endpoint may differ) return await axios($, { method: "POST", url: `https://sheets.googleapis.com/v4/spreadsheets/${this.sheetId}/values/${this.worksheetId}:append`, headers: { Authorization: `Bearer ${this.google_sheets.$auth.oauth_access_token}`, }, params: { valueInputOption: "USER_ENTERED", }, data: { values: [this.row], }, }); }, }); ### What to do next - Double-check the value of row in your integration test payload. Make sure it is always an array and never undefined. - If you are dynamically generating the row array, add a debug/log step before the Google Sheets action to confirm its value. - If the issue persists, try simplifying the payload to a minimal array (e.g., ["test"]) to see if the error still occurs. — If you continue to have trouble or need more help debugging, please visit Support - Pipedream for more support options.

/v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/onboarding
dataapi | → GET /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/onboarding 200 23ms
dataapi | ← OPTIONS /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test
dataapi | → OPTIONS /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test 204 1ms
dataapi | ← POST /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test
dataapi | [Integration Test] Got dynamicPropsId: undefined
dataapi | [Integration Test] Run payload: {
dataapi | “id”: “google_sheets-add-single-row”,
dataapi | “externalUserId”: “org_57a9dbab-f764-44e4-8e13-3dced1ac16d9”,
dataapi | “configuredProps”: {
dataapi | “googleSheets”: {
dataapi | “authProvisionId”: “apn_AVhlMbe”
dataapi | },
dataapi | “drive”: “My Drive”,
dataapi | “sheetId”: “1RQcLbZmviUUj6yzwwAY8EW3MCapyZ1R_I-go_KCHJNM”,
dataapi | “worksheetId”: 0,
dataapi | “hasHeaders”: false,
dataapi | “myColumnData”: [
dataapi | “test@example.com”,
dataapi | “Test”,
dataapi | “User”,
dataapi | “Test Company Inc.”,
dataapi | “Product Manager”,
dataapi | “+14155551234”,
dataapi | “San Francisco”,
dataapi | “California”,
dataapi | “United States”,
dataapi | “”,
dataapi | “testcompany.com”,
dataapi | “”,
dataapi | “”,
dataapi | “high”,
dataapi | “5”,
dataapi | “23”,
dataapi | “2025-12-02T18:29:46.427Z”
dataapi | ]
dataapi | }
dataapi | }
dataapi | [Integration Test] Result: {
dataapi | “os”: [
dataapi | {
dataapi | “ts”: 1764700194144,
dataapi | “k”: “error”,
dataapi | “err”: {
dataapi | “name”: “Error”,
dataapi | “message”: “undefined is not an array or an array-like”,
dataapi | [Integration Test] Pipedream error: undefined is not an array or an array-like
dataapi | “stack”: “Error: undefined is not an array or an array-like\n at Object.sanitizedArray (file:///tmp/pdg/dist/code/4fbcbbea00e9f8eb912508a783f31752127af886e4eae5d22a03e24af26d139e/code/google_sheets.app.mjs:178:13)\n at Object.run (file:///tmp/pdg/dist/code/4fbcbbea00e9f8eb912508a783f31752127af886e4eae5d22a03e24af26d139e/code/actions/add-single-row/add-single-row.mjs:158:33)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async file:///var/task/component_maker.mjs:170:11\n at async captureObservations (/var/task/node_modules/@lambda-v2/component-runtime/src/captureObservations.js:28:5)\n at async run (file:///var/task/component_maker.mjs:157:20)\n at async file:///var/task/component_maker.mjs:199:11”
dataapi | }
dataapi | }
dataapi | ],
dataapi | “exports”: {},
dataapi | “t”: {
dataapi | “ar”: 1764700188879,
dataapi | “br”: 1764700188970,
dataapi | “bp”: 1764700188970,
dataapi | “bls”: 1764700188970,
dataapi | “ble”: 1764700194163
dataapi | }
dataapi | }
dataapi | → POST /v1/organizations/57a9dbab-f764-44e4-8e13-3dced1ac16d9/integrations/acd09a6e-553c-46a7-b845-c0a1db00364d/test 200 8s

Based on the error message: "message": "undefined is not an array or an array-like", "stack": "Error: undefined is not an array or an array-like\n at Object.sanitizedArray ..." and your payload: on "configuredProps": { "googleSheets": { "authProvisionId": "apn_AVhlMbe" }, "drive": "My Drive", "sheetId": "1RQcLbZmviUUj6yzwwAY8EW3MCapyZ1R_I-go_KCHJNM", "worksheetId": 0, "hasHeaders": false, "myColumnData": [ "[test@example.com](mailto:test@example.com)", "Test", "User", "Test Company Inc.", "Product Manager", "[+14155551234](tel:+14155551234)", "San Francisco", "California", "United States", "", "[testcompany.com](http://testcompany.com)", "", "", "high", "5", "23", "2025-12-02T18:29:46.427Z" ] } ### What’s happening? The error "undefined is not an array or an array-like" means that somewhere in the code, a value expected to be an array is actually undefined. This is likely related to one of the properties in your payload. ### Most likely cause The most common cause in this context is that the worksheetId property is expected to be an array (e.g., "0"]), but you are passing it as a number (0). According to the [Pipedream dynamicProps spec for Google Sheets: on { "name": "worksheetId", "type": "string[]", "label": "Worksheet(s)", ... } So, worksheetId should be an array of strings, not a number. ### How to fix Change: on "worksheetId": 0, to on "worksheetId": ["0"], or, if you want to reference a specific worksheet by its ID, use the correct string value in an array. ### Summary - The error is because worksheetId is not an array. - Change "worksheetId": 0 to "worksheetId": ["0"]. — If you continue to have issues, please double-check all required fields and their types in your payload. If you need more help, visit 404: Not Found - Pipedream

whats legacy slack? are there others?