emailr_
Todos los artículos
caso de uso·8 min

Emails de solicitud de feedback: Cuándo y cómo pedirlo

feedbackencuestasinteracción

Los emails de feedback te ayudan a entender a los usuarios y a mejorar tu producto. Pero el momento y el enfoque importan—las solicitudes mal sincronizadas molestan a los usuarios y generan tasas de respuesta bajas. Aquí te explicamos cómo pedirlo de forma eficaz.

Momento del feedback

Solicitudes basadas en eventos

const feedbackTriggers = [
  {
    event: 'feature_used_10_times',
    delay: '1 day',
    template: 'feature-feedback',
    question: 'How useful is this feature?'
  },
  {
    event: 'subscription_month_3',
    delay: '0',
    template: 'nps-survey',
    question: 'How likely are you to recommend us?'
  },
  {
    event: 'support_ticket_resolved',
    delay: '1 hour',
    template: 'support-feedback',
    question: 'How was your support experience?'
  },
  {
    event: 'onboarding_complete',
    delay: '3 days',
    template: 'onboarding-feedback',
    question: 'How was getting started?'
  }
];

Email de encuesta NPS

await sendEmail({
  to: user.email,
  subject: 'Quick question about your experience',
  template: 'nps-survey',
  data: {
    user,
    question: 'How likely are you to recommend us to a colleague?',
    // One-click rating in email
    ratingUrls: Array.from({ length: 11 }, (_, i) => ({
      score: i,
      url: `${baseUrl}/feedback/nps?score=${i}&token=${token}`
    }))
  }
});

Feedback sobre funcionalidades

Feedback en contexto

await sendEmail({
  to: user.email,
  subject: `How's ${feature.name} working for you?`,
  template: 'feature-feedback',
  data: {
    user,
    feature: {
      name: feature.name,
      usageCount: usage.count,
      firstUsed: usage.firstUsedAt
    },
    question: 'How useful is this feature for your workflow?',
    options: [
      { label: 'Very useful', value: 5, url: feedbackUrl(5) },
      { label: 'Somewhat useful', value: 3, url: feedbackUrl(3) },
      { label: 'Not useful', value: 1, url: feedbackUrl(1) }
    ]
  }
});

Feedback de la beta

await sendEmail({
  to: user.email,
  subject: 'Your feedback on the beta',
  template: 'beta-feedback',
  data: {
    user,
    betaFeature: feature.name,
    questions: [
      'What worked well?',
      'What was confusing?',
      'What\'s missing?'
    ],
    feedbackFormUrl: `${baseUrl}/beta/${feature.slug}/feedback`,
    incentive: 'Get 3 months free when we launch'
  }
});

Seguimiento de soporte

Feedback tras la resolución

await sendEmail({
  to: user.email,
  subject: 'How was your support experience?',
  template: 'support-feedback',
  data: {
    user,
    ticket: {
      id: ticket.id,
      subject: ticket.subject,
      resolvedAt: ticket.resolvedAt,
      agent: ticket.assignedAgent.name
    },
    rating: {
      question: 'How would you rate your support experience?',
      options: [
        { emoji: '😊', label: 'Great', value: 5 },
        { emoji: '😐', label: 'Okay', value: 3 },
        { emoji: '😞', label: 'Poor', value: 1 }
      ]
    },
    followUpUrl: `${baseUrl}/support/tickets/${ticket.id}`
  }
});

Feedback del onboarding

Encuesta tras el onboarding

await sendEmail({
  to: user.email,
  subject: 'Quick question about getting started',
  template: 'onboarding-feedback',
  data: {
    user,
    completedSteps: onboarding.completedSteps,
    timeToComplete: onboarding.duration,
    questions: [
      {
        id: 'ease',
        text: 'How easy was it to get started?',
        type: 'scale',
        min: 1,
        max: 5
      },
      {
        id: 'missing',
        text: 'Was anything confusing or missing?',
        type: 'text'
      }
    ],
    surveyUrl: `${baseUrl}/feedback/onboarding?token=${token}`
  }
});

Feedback por cancelación

Encuesta de cancelación

await sendEmail({
  to: user.email,
  subject: 'One quick question before you go',
  template: 'churn-feedback',
  data: {
    user,
    subscription: {
      plan: subscription.plan,
      duration: subscription.tenure
    },
    question: 'What\'s the main reason you\'re leaving?',
    options: [
      { label: 'Too expensive', value: 'price' },
      { label: 'Missing features', value: 'features' },
      { label: 'Switched to competitor', value: 'competitor' },
      { label: 'No longer needed', value: 'not_needed' },
      { label: 'Other', value: 'other' }
    ],
    feedbackUrl: `${baseUrl}/feedback/cancellation?token=${token}`,
    winBackOffer: 'Share feedback and get 50% off if you return'
  }
});

Mejores prácticas para emails de feedback

Manténlo breve

// Good: One question, one click
const simpleNPS = {
  subject: 'One quick question',
  body: 'How likely are you to recommend us?',
  action: '10 clickable numbers in email'
};

// Bad: Long survey link
const longSurvey = {
  subject: 'Please complete our 15-question survey',
  body: '...',
  action: 'Link to external survey tool'
};

El momento importa

const feedbackTiming = {
  // Good times
  afterPositiveExperience: true,  // Just completed a task
  afterMilestone: true,           // 30 days, 100 uses, etc.
  afterSupportResolution: true,   // 1 hour after close
  
  // Bad times
  duringOnboarding: false,        // Let them learn first
  afterNegativeExperience: false, // They're already frustrated
  tooFrequently: false            // Max once per month
};

Incentiva con criterio

const incentiveStrategy = {
  // Low-effort feedback (NPS, ratings)
  lowEffort: {
    incentive: 'none',
    reason: 'Quick enough that incentive isn\'t needed'
  },
  
  // Medium-effort (short survey)
  mediumEffort: {
    incentive: 'entry into drawing',
    reason: 'Small reward for small effort'
  },
  
  // High-effort (interview, detailed feedback)
  highEffort: {
    incentive: 'gift card or account credit',
    reason: 'Compensate for significant time'
  }
};

Análisis del feedback

Seguimiento de respuestas

interface FeedbackMetrics {
  responseRate: number;
  averageScore: number;
  scoreDistribution: Record<number, number>;
  commonThemes: string[];
  actionableInsights: string[];
}

async function analyzeFeedback(campaignId: string): Promise<FeedbackMetrics> {
  const responses = await getFeedbackResponses(campaignId);
  
  return {
    responseRate: responses.length / emailsSent,
    averageScore: calculateAverage(responses.map(r => r.score)),
    scoreDistribution: groupBy(responses, 'score'),
    commonThemes: extractThemes(responses.map(r => r.text)),
    actionableInsights: identifyActionItems(responses)
  };
}

Mejores prácticas

  1. Pide en el momento adecuado - Después de experiencias positivas
  2. Hazlo sencillo - Una pregunta es mejor que diez
  3. Facilítalo - Respuestas con un clic en el email
  4. Cierra el ciclo - Diles a los usuarios cómo usaste su feedback
  5. No pidas en exceso - Limita las solicitudes de feedback por usuario
  6. Segmenta las solicitudes - Preguntas distintas para usuarios distintos

Los buenos emails de feedback se sienten como una conversación, no como un interrogatorio. Facilita que los usuarios compartan sus ideas.

e_

Escrito por el equipo de emailr

Construyendo infraestructura de email para desarrolladores

¿Listo para empezar a enviar?

Obtén tu clave API y envía tu primer email en menos de 5 minutos. No se requiere tarjeta de crédito.