MigrateFlows

Guía · actualizada en octubre de 2026

Cómo exportar tus data stores de Pipedream antes del 30 de abril de 2027

Respuesta corta. El export de flujos de Pipedream no incluye los data stores, y todos los datos de Workflows se borran el 30 de abril de 2027. Pegá el paso de código de abajo, que solo lee, en un flujo de Pipedream: te baja todos los registros de un data store en un archivo .datastore.json. Soltá ese archivo junto con tu export en MigrateFlows y tus flujos de n8n vienen con los datos ya cargados.

Paso a paso

  1. En Pipedream, creá un flujo nuevo con un disparador HTTP / Webhook.
  2. En la configuración del disparador, poné HTTP Response en Return a custom response from your workflow.
  3. Agregá un paso de código Node.js y pegá el código de abajo.
  4. En el paso, elegí tu data store, escribí su nombre tal como aparece en Pipedream → Data Stores, y elegí una clave de acceso (cualquier contraseña).
  5. Deploy, y después abrí la URL del disparador en el navegador agregando ?key= y tu clave. Se baja el archivo.
  6. Repetí con cada data store: cambiá la selección y el nombre, publicá y volvé a abrir la URL. Cuando termines, borrá el flujo.

El código

// MigrateFlows data store exporter for Pipedream. Read-only: it never changes or deletes your records.
// 1. Create a workflow with an HTTP trigger and set its HTTP Response to "Return a custom response from your workflow".
// 2. Add a Node.js code step, paste this code, pick your data store, type its name and choose an access key.
// 3. Deploy, then open the trigger URL with ?key=YOUR_ACCESS_KEY in your browser: the file downloads.
// 4. Repeat for each data store (change the selection and the name), then delete the workflow.
export default defineComponent({
  props: {
    dataStore: { type: "data_store" },
    storeName: {
      type: "string",
      label: "Data store name",
      description: "Exactly as it appears in Pipedream → Data Stores",
    },
    accessKey: {
      type: "string",
      label: "Access key",
      description: "Any password you choose. Open the trigger URL with ?key=<this value>",
    },
  },
  async run({ steps, $ }) {
    const query = (steps.trigger && steps.trigger.event && steps.trigger.event.query) || {};
    if (query.key !== this.accessKey) {
      await $.respond({ status: 403, body: "Wrong or missing ?key=" });
      return $.flow.exit("wrong access key");
    }
    const records = {};
    let count = 0;
    for await (const [key, value] of this.dataStore) {
      records[key] = value;
      count++;
    }
    const file = {
      migrateflows: "pipedream-data-store",
      version: 1,
      name: this.storeName,
      exportedAt: new Date().toISOString(),
      count,
      records,
    };
    const filename = `${String(this.storeName).replace(/[^\w.-]+/g, "_")}.datastore.json`;
    await $.respond({
      status: 200,
      headers: {
        "Content-Type": "application/json",
        "Content-Disposition": `attachment; filename="${filename}"`,
      },
      body: JSON.stringify(file, null, 2),
    });
    return { name: this.storeName, count };
  },
});

También en GitHub: davobene/migrateflows. Los comentarios del código están en inglés.

Para tener en cuenta

¿Tenés el export y los archivos de data stores? Convertilos juntos.Convertir mis flujos

Cómo quedan los datos en n8n

MigrateFlows convierte los pasos de data store (tanto las acciones prearmadas como this.dataStore en pasos de código) en datos estáticos del flujo de n8n, y los precarga desde tu archivo .datastore.json la primera vez que corre el flujo. Dos diferencias con Pipedream:

Para datos que comparten muchos flujos o que crecen mucho, conviene pasarlos a una base de datos (Postgres, Supabase, Airtable) y apuntar los flujos ahí. El archivo .datastore.json es JSON común (records relaciona cada clave con su valor), así que lo podés cargar en cualquier lado.

Más: cómo exportar tus flujos de Pipedream · guía de migración a n8n.