Take the 2-minute tour ×
Web Applications Stack Exchange is a question and answer site for power users of web applications. It's 100% free, no registration required.

I made the mistake of inviting some friends to linkedin.

The result is that linkedin will now re-send e-mails a few more times to remind them that they didn't register yet.

Is there a way to make it not do that after the first time the invitation was sent?

share|improve this question

2 Answers 2

up vote 7 down vote accepted

Have you tried the following?

  1. Choose Sent from the Inbox menu in the top navigation bar.
  2. Choose the Sent Invitations tab
  3. Open any of the pending "Invitation to connect on LinkedIn" messages you've sent to your friends.
  4. Click Withdraw (the button below the invitation, next to "Resend")

I'm not sure about it, but the "withdraw" option does seem promising. You can also "delete" sent invitations, but to me "withdraw" sounds more likely to do what you're after.

share|improve this answer
Is it possible to "mass withdraw" ? –  Tal Galili Sep 27 '10 at 18:17
@Tal, I didn't spot such an option (unless "delete" does the same as "withdraw"; mass delete is possible). But wait, I found this entry about invitation reminders at LinkedIn FAQ. It says: "[...] customer service can withdraw all pending Invitations on your behalf" and instructs how to request that. –  Jonik Sep 27 '10 at 19:20

LinkedIn mass withdraw:

Answering Tal's question and follow up: it seems there is no mass withdraw functionality on the LinkedIn site.

So I used selenium and chromedriver to write a crude little python program, which I ran in IDLE, to do this. (The continuing issues of firefox version vs selenium caused firefox to not be helpful for me. ymmv)

You need to edit the definitions of the email address and password you use to login to linkedin.

(Obviously, edit out the messages printed to IDLE shell if that's too verbose. fwiw, I didn't see how to change the number of messages displayed on the linkedin 'sent' messages page to be greater than 10.)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
import unittest, time, re

userid = 'youremailaddress'  # edit to the email address you use to login to linkedin
pwd = 'yourlinkedinpassword' # edit to your linkedin password

class LI(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.base_url = "https://www.linkedin.com/"
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_l_i(self):
        driver = self.driver
        driver.get(self.base_url + "uas/login")
        mbox_ids =  []
        email_textbox = driver.find_element_by_id("session_key-login")
        password_textbox = driver.find_element_by_id("session_password-login")
        driver.get(self.base_url + "inbox/sent")
        first_src = driver.page_source

        data_count_start = first_src.find('data-count') + 12
        data_count_end = data_count_start + first_src[data_count_start:].find('"')
        data_count = int(first_src[data_count_start:data_count_end]) + 9
        page_count = data_count / 10
        print str(page_count) + ' pages of messages'

        for i in range(page_count + 1):
            driver.get(self.base_url + "inbox/sent?startRow=" + str((i * 10) + 1))
            src = driver.page_source
            while src.find('data-gid') != -1:
                id_start = src.find('data-gid') + 10
                id_end = id_start + 14
                src= src[id_end:]
        print str(len(mbox_ids)) + ' messages'

        msg_count = 0              
        for x in mbox_ids:
            driver.get("http://www.linkedin.com/inbox/#detail?itemId=" + x + "&trk=COMM_NI")
            msg_count = msg_count + 1
                withdraw_link = driver.find_element_by_link_text("Withdraw")
                if withdraw_link != None:
                    print 'withdrew message ' + str(msg_count) + ', id number ' + x
                    print 'no withdraw button found for message ' + str(msg_count) + ', id number ' + x
            except NoSuchElementException, e:
                print 'no withdraw button found for message ' + str(msg_count) + ', id number ' + x

    def is_element_present(self, how, what):
            self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e:
            return False
        return True

    def is_alert_present(self):
        except NoAlertPresentException, e:
            return False
        return True

    def close_alert_and_get_its_text(self):
            alert = self.driver.switch_to_alert()
            alert_text = alert.text
            if self.accept_next_alert:
            return alert_text
        finally: self.accept_next_alert = True

    def tearDown(self):
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.