FrancodesystemsFran<code>systems
Project managementIntegración a medida

Integración Holded Asana

Proyectos y horas de Asana convertidos en presupuestos y facturas Holded.

HoldedHolded
Asana

Tiempo de implantación · 5-8 días laborables

Diagnóstico

El problema

Agencias y equipos de servicios que cobran por proyecto, por horas o por entregables registran todo el trabajo en Asana: tareas asignadas, tiempos invertidos, milestones cumplidos. Pero luego, al final de mes, alguien pasa 1 o 2 días enteros revisando proyecto a proyecto, sumando tareas y horas, y construyendo facturas Holded a mano en Excel previo. Eso son entre 12 y 30 horas mensuales de admin de alto nivel desperdiciadas. Y siempre hay disputas con clientes porque los conceptos de factura no coinciden con los nombres de las tareas. Las apps del marketplace de Asana para facturación son escasas, ninguna soporta Holded nativamente y las que existen no manejan bien tarifas variables por rol o cliente.

Propuesta

La solución

Cuando un proyecto se cierra en Asana, generamos automáticamente la factura final en Holded basada en las tareas completadas, los milestones cobrables o las horas registradas. Soporta tarifas por persona, por rol, por tipo de tarea o por proyecto. Los presupuestos previos (presales) también pueden generarse al pasar un proyecto a la sección 'Aprobado'. El cliente del Asana Portfolio se mapea a contacto Holded con NIF, y el estado de cobro vuelve a Asana como custom field visible en el portfolio.

Scope

Qué automatizamos

  • Proyecto Asana completado → factura Holded con detalle por tarea o milestone
  • Time tracking Asana (nativo o Harvest/Toggl) → líneas de factura por horas con tarifa por persona o rol
  • Cliente del portfolio Asana → contacto Holded con NIF validado
  • Milestone marcado 'facturable' → línea inmediata en factura del cliente
  • Sección 'Aprobado' en kanban de propuestas → presupuesto Holded automático
  • Tarifa diferenciada por asignado, por etiqueta de tarea o por tipo de proyecto
  • Estado de cobro Holded → custom field en el portfolio Asana visible para el PM
  • Retainer mensual con horas incluidas → factura recurrente que descuenta horas consumidas
Quién lo usa

Casos de uso reales

Estos son los perfiles que más nos piden la integración HoldedAsana y qué consiguen al final.

Caso 01

Agencia de diseño con 25 clientes activos

Antes: Final de mes: 2 días sumando tareas y horas de Asana para facturar.

Después: Facturas generadas en 10 minutos con detalle por tarea/persona. Disputas con clientes desaparecen porque los conceptos coinciden con Asana.

Caso 02

Consultora que cobra retainer + extras

Antes: El retainer mensual se facturaba bien pero las horas extra de cada cliente se olvidaban a menudo.

Después: Retainer recurrente automático + extras añadidas como líneas al cierre. Cero horas perdidas en facturación.

Caso 03

Equipo con tarifas diferenciadas por rol

Antes: Las horas de senior vs junior se mezclaban en una sola tarifa promedio, perdiendo margen.

Después: Cada asignado va con su tarifa exacta en la línea de factura. Margen real visible por proyecto.

Antes / Después

Qué cambia exactamente

El día a día sin la integración y con ella, lado a lado.

Sin la integración

  • 12-30 h/mes facturando proyectos Asana a mano
  • Conceptos de factura que no coinciden con tareas → disputas
  • Horas extra y milestones olvidados
  • Tarifas promediadas que esconden margen real por rol

Con la integración

  • Factura generada en minutos al cerrar proyecto
  • Conceptos espejo de las tareas Asana: cero disputas
  • Milestones y horas extra propagados sin fallos
  • Tarifa real por asignado o rol: margen visible
Arquitectura

Cómo lo construimos

Conectamos vía Asana API y webhooks (project events, task completions, custom fields) a una cola persistida. La lógica de tarifas vive en config versionada por cliente: 'persona X = 60€/h, rol Diseño = 75€/h, proyecto Y = tarifa plana de 12000€'. El worker llama a la API de Holded para crear presupuestos o facturas con líneas detalladas. Si usas Harvest, Toggl o time tracking nativo de Asana, soportamos los tres como fuente de horas. Todo idempotente con el ID del evento Asana, así que reintento no duplica nada.

flow.ts
webhook asana.event
queue.enqueue(jobId)
worker.handle() // idempotente
holded.api.call() // retries con backoff
log.emit({ status: 'ok' })
FAQ

Preguntas frecuentes

¿Soporta diferentes tarifas por tarea o por persona?

Sí. Mapeamos asignados, etiquetas o tipos de tarea a tarifa horaria en config versionada. Puedes tener 'María = 80€/h, Diseño = 70€/h, Cliente X = tarifa plana proyecto' simultáneamente.

¿Qué pasa con las horas no facturables?

Las tareas marcadas como 'no facturable' (etiqueta custom) se ignoran. Quedan registradas en Asana pero no van a Holded. Te damos un reporting separado para que veas el ratio facturable/total.

¿Funciona con Asana Goals y Portfolios?

Sí. Los Portfolios son el nivel natural de 'cliente' para nosotros: un portfolio = un cliente Holded. Goals los ignoramos por defecto (no son facturables) salvo que los marques explícitamente.

¿Puedo facturar retainers con horas incluidas?

Sí. Configuras retainer de 20h/mes a tarifa X. Cada mes generamos factura recurrente y descontamos horas consumidas. Las horas extra van como línea separada en la misma factura.

¿Y si usamos Harvest o Toggl en lugar del time tracking de Asana?

Sin problema. Soportamos las tres fuentes. De hecho Harvest tiene mejor granularidad para algunos casos. Te ayudamos a decidir cuál usar según vuestro flujo.

¿El estado de la factura se ve en Asana?

Sí. Creamos un custom field 'Estado de cobro' a nivel proyecto que se actualiza en tiempo real desde Holded. El PM ve si está pagada sin abrir Holded.

Francodesystems

¿Hablamos de tu integración con Asana?

Llamada de 30 minutos sin compromiso. Salimos con alcance y precio.