Both with Massimo's auth.settings.table_user.email.default = registrant.email auth.settings.table_user.email.writable=False form=auth.register()
and with your db[auth.settings.table_user_name].email.writable=False db[auth.settings.table_user_name].email.default=registrant.email form=auth.register() I get the error Exception: Target receiver address not specified at the line of form=auth.register() For reference, the entire block (with error handling removed for clarity) is: def user(): if request.args(0)=='register': registrant = db( db.registrant.token == request.vars.token ).select().first() db[auth.settings.table_user_name].email.writable=False db[auth.settings.table_user_name].email.default=registrant.email form=auth.register() return dict(form=form) return dict(form=auth())